Spring Cloud Alibaba - 03 注冊中心Nacos 應(yīng)用篇
文章目錄

無注冊中心直接調(diào)用Demo
注冊中心的演進
Nacos Server 安裝
Linux 下的 安裝 (單節(jié)點)
Nacos Client 接入
Step 1 搞依賴
Step 2 搞注解 @EnableDiscoveryClient (高版本可省略)
Step 3 搞配置
Step 4 啟動服務(wù)端和客戶端
Step 5 驗證測試
源碼
無注冊中心直接調(diào)用Demo
package com.artisan.v1.controller; import com.artisan.common.entity.OrderInfo; import com.artisan.common.entity.ProductInfo; import com.artisan.common.vo.OrderVo; import com.artisan.mapper.OrderInfoMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @author 小工匠 * @version 1.0 * @description: TODO * @date 2022/2/1 21:20 * @mark: show me the code , change the world */ @RestController public class OrderInfoController { @Autowired private RestTemplate restTemplate; @Autowired private OrderInfoMapper orderInfoMapper; /** * 調(diào)用地址,硬編碼 */ public static final String uri = "http://localhost:9999/selectProductInfoById/"; @RequestMapping("/selectOrderInfoById/{orderNo}") public Object selectOrderInfoById(@PathVariable("orderNo") String orderNo) { OrderInfo orderInfo = orderInfoMapper.selectOrderInfoById(orderNo); if (null == orderInfo) { return "根據(jù)orderNo:" + orderNo + "查詢沒有該訂單"; } // 發(fā)起遠(yuǎn)程Http調(diào)用 ResponseEntity
Order服務(wù)通過RestTemplate 調(diào)用方式調(diào)用遠(yuǎn)端的Product服務(wù)
我們來分析一下缺點
在調(diào)用的時候,請求的Ip地址和端口是硬編碼的.若此時,服務(wù)提供方(product)服務(wù)部署的機器換了端口或者是更換了部署機器的Ip,那么我們需要修改代碼重新發(fā)布部署.
假設(shè)我們的product服務(wù)壓力過大,我們需要把product服務(wù)作為集群,那么意味著product是多節(jié)點部署比如原來的,我們只有一臺服務(wù)器,現(xiàn)在有多臺服務(wù)器,那么作為運維人員需要在服務(wù)消費方進行手工維護一份注冊表(容易出錯)
當(dāng)然了,上面的問題可以通過ng來做負(fù)載均衡,我首先認(rèn)為這是可行的,但當(dāng)時大規(guī)模的微服務(wù), ng的配置文件復(fù)雜度可想而知。
注冊中心的演進
詳見 ProcessOn 6個版本的演進
Nacos Server 安裝
- :https://github.com/alibaba/Nacos/releases
Linux 下的 安裝 (單節(jié)點)
部署文檔: https://nacos.io/zh-cn/docs/deployment.html
[root@VM-0-7-centos lb]# tar -xvzf 壓縮包.tar.gz [root@VM-0-7-centos lb]# cd nacos/bin [root@VM-0-7-centos bin]# ./startup.sh -m standalone 單機模式下運行 [root@VM-0-7-centos bin]# lsof -i:8848 [root@VM-0-7-centos bin]# sh shutdown.sh 停止nacos
訪問服務(wù) http://ip:8848/nacos , 默認(rèn)的用戶名密碼是 nocas/nocas
Nacos Client 接入
Step 1 搞依賴
Step 2 搞注解 @EnableDiscoveryClient (高版本可省略)
@SpringBootApplication @EnableDiscoveryClient public class ArtisanNacosClientOrderApplication { public static void main(String[] args) { SpringApplication.run(ArtisanNacosClientOrderApplication.class, args); } }
Step 3 搞配置
spring: cloud: nacos: discovery: server-addr: 4.117.97.88:8848 application: name: artisan-product-center
server-addr 不需要寫協(xié)議(http) ,直接寫 ip:port
Step 4 啟動服務(wù)端和客戶端
啟動nacos server ,
啟動 artisan-cloud-nacosclient-order 注冊到nacos server
啟動 artisan-cloud-nacosclient-product 注冊到nacos server
Step 5 驗證測試
OrderInfoController 類增加
@GetMapping("/getInstance") public List
源碼
https://github.com/yangshangwei/SpringCloudAlibabMaster
Spring Spring Cloud
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。