Spring Cloud Alibaba(4)---Nacos(註冊中心)

雨點的名字發表於2021-04-22

Nacos(註冊中心)

有關Spring Cloud Alibaba之前寫過三篇文章。

Spring Cloud Alibaba(1)---入門篇

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、沒有服務註冊中心

Spring Cloud Alibaba(4)---Nacos(註冊中心)

正常邏輯如果沒有註冊服務發現中心的話,訂單服務如何去調取商品服務呢?

我們可以將服務呼叫 域名埠號 寫死到程式碼或配置檔案中,然後通過HTTP請求,這樣做是可以,但有很多不足。

1、人工維護慢慢會出現瓶頸和問題:新增服務或服務擴容,所有依賴需要新增修改配置;
2、某臺伺服器掛了還要手動摘流量;服務上下線變更時效慢;
3、人工配置的話容易出現錯誤或漏配

這時你會想如果能讓服務自動化完成配置(註冊)和查詢(發現)就好了,於是乎服務註冊發現就應運而生。

2、Nacos註冊中心理論

Spring Cloud Alibaba(4)---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.xmlSpringBoot啟動類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.xmlSpringBoot啟動類bootstrap.yaml配置類,程式碼和上面一樣這裡就不在貼出。


三、測試

商品微服務採用叢集方式啟動,埠號分別為:6001、6002
訂單微服務未採用叢集方式啟動,訂單服務埠號:7001

上面都啟動成功後,我們來訪問Nacos客戶端。

http://127.0.0.1:8848/nacos
Spring Cloud Alibaba(4)---Nacos(註冊中心)

從圖中可以看出 在服務列表上

 mall-goods 健康例項數有兩個。因為商品服務商品是啟動了2個。
 mall-order 健康例項數只有一個。

我們可以在看下,商品服務列表中的詳情,點進去之後,可以看出商品服務叢集的埠

Spring Cloud Alibaba(4)---Nacos(註冊中心)

總結 這篇部落格也是比較簡單了來學習了Nacos作為服務註冊中心,下一篇部落格開始寫Nacos作為配置中心

GitHub地址:spring-cloud-alibaba-study



少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(4)

相關文章