Nacos(注冊中心)
有關Spring Cloud Alibaba之前寫過三篇文章。
Spring Cloud Alibaba(2)---RestTemplate微服務項目
Spring Cloud Alibaba(3)---Nacos概述
有關注冊中心,之前有寫過Eureka注冊中心
SpringCloud(3)---Eureka服務注冊與發現
前言
有關Nacos客戶端的搭建和Nacos的介紹在 Spring Cloud Alibaba(2)---Nacos概述 有講到,所以這里不在陳述。因為是要實現注冊中心,所以一定是要有多個微服務,
上一篇博客 RestTemplate微服務項目 已經搭建好一個腳手架,這篇是在它的基礎上添加Spring Cloud Alibaba框架和Nacos組件。
一、概述
1、沒有服務注冊中心

正常邏輯如果沒有注冊服務發現中心的話,訂單服務如何去調取商品服務呢?
我們可以將服務調用 域名 和 端口號 寫死到代碼或配置文件中,然后通過HTTP請求,這樣做是可以,但有很多不足。
1、人工維護慢慢會出現瓶頸和問題:新增服務或服務擴容,所有依賴需要新增修改配置;
2、某台服務器掛了還要手動摘流量;服務上下線變更時效慢;
3、人工配置的話容易出現錯誤或漏配
這時你會想如果能讓服務自動化完成配置(注冊)和查找(發現)就好了,於是乎服務注冊發現就應運而生。
2、Nacos注冊中心理論

這里把這個圖片做個簡單解釋
1. 訂單服務和商品服務啟動的時候, 會注冊到服務發現中心(Nacos), 告訴它,我的ip和端口號是什么。
2. 訂單服務要調商品服務的時候,會先去注冊列表獲取所以商品服務的注冊信息(ip+端口號)。
3. 拿到了商品服務的ip和port, 接下來就可以調用商品服務了.
我們可以看出有了注冊服務中心, 訂單服務 需要知道 商品服務 的地址和端口號不需要通過我們去配置而是可以直接去注冊中心拿到。
二、項目搭建
1、啟動Nacos客戶端
有關Nacos客戶端的搭建之前有說過,這里不在陳述
sh startup.sh -m standalone
2、父工程(mall-parent)
對於父工程,只要添加SpringCloudAlibaba相關jar包就可以了
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
3、商品微服務(mall-goods)-消費方
這里需要修改三個地方:pom.xml、SpringBoot啟動類、bootstrap.yaml配置類
1).pom.xml
添加Nacos客戶端jar包
<!--添加nacos客戶端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2).bootstrap.yaml配置類
注冊到指定Nacos客戶端
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3).SpringBoot啟動類
添加@EnableDiscoveryClient
注解
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.jincou.goods.dao")
public class GoodsApplication {
public static void main(String [] args){
SpringApplication.run(GoodsApplication.class,args);
}
}
4、訂單微服務(mall-order)-提供方
這里同樣需要修改三個地方:pom.xml、SpringBoot啟動類、bootstrap.yaml配置類,代碼和上面一樣這里就不在貼出。
三、測試
商品微服務采用集群方式啟動,端口號分別為:6001、6002
訂單微服務未采用集群方式啟動,訂單服務端口號:7001
上面都啟動成功后,我們來訪問Nacos客戶端。
http://127.0.0.1:8848/nacos

從圖中可以看出 在服務列表上
mall-goods 健康實例數有兩個。因為商品服務商品是啟動了2個。
mall-order 健康實例數只有一個。
我們可以在看下,商品服務列表中的詳情,點進去之后,可以看出商品服務集群的端口

總結
這篇博客也是比較簡單了來學習了Nacos作為服務注冊中心,下一篇博客開始寫Nacos作為配置中心
GitHub地址
:spring-cloud-alibaba-study
少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(4)