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)