nacos的注冊服務發現及配置管理


  之前在學習cloud的時候,也接觸到了nacos,只不過那時候更多的是測試了nacos和cloud的無縫連接,也就是nacos能夠集成cloud的一些落地技術棧,例如Feign、Ribbon等,包括cloud里面的一些注解,測試demo也上傳到了git上面。

https://github.com/wcyzxs/nacos-demo.git

  這次正好跟着b站上面的項目,進一步對nacos進行了學習。先簡單介紹下nacos吧,nacos是阿里巴巴下面的一套微服務框架,而cloud則是spring下面的一套微服務框架,現在更多的偏向使用nacos來作為項目的微服務架構。

  就我個人而言,覺得nacos之所以越來越流行,有兩點優勢吧。1.cloud的eureka在18年就已經不在維護了,社區活躍度也許久沒有更新了。而nacos也是具有服務注冊與發現這個功能的。2.某個微服務部署成集群的話,那么要是修改一個配置,那么所有服務上面的配置都要更改,是比較麻煩的。而nacos的其中一個很大的優勢就是能夠統一管理服務的配置文件,可以實現配置的實時動態獲取,以及配置共享。意思就是說如果我5個服務的配置都是一樣的,那么我在nacos上面配置一個配置文件,然后5個服務可以統一引入該配置,並且要是修改信息的話,我們只需要在nacos上面修改即可。對應的微服務項目只要加個注解就可以實現實時獲取了,這個是真的很方便。下面就依次介紹下這兩個核心功能吧。

  nacos服務注冊與發現

1.引入依賴

<!--將服務注冊進nacos中-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.application.yml添加以下配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3.啟動類上面添加@EnableDiscoveryClient注解

最后啟動項目,然后界面輸入127.0.0.1:8848/nacos即可,登錄進去后即可在服務管理->服務列表下面就可以發現被注冊的服務。(這里關於nacos的安裝我就不說了,網上也有教程)

  nacos的統一配置管理

在介紹nacos配置管理之前,先簡單介紹下nacos關於配置的幾個相關概念,如命名空間、組。

/

 *  1)、命名空間:配置隔離;

 *      默認:public(保留空間);默認新增的所有配置都在public空間。可以有兩種不同命名形式

 *      1、開發,測試,生產:利用命名空間來做環境隔離。

 *         注意:在bootstrap.properties;配置上,需要使用哪個命名空間下的配置,

 *         spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871

 *      2、每一個微服務之間互相隔離配置,每一個微服務都創建自己的命名空間,只加載自己命名空間下的所有配置

 *  2)、配置集:所有的配置的集合

 *  3)、配置集ID:類似文件名;也就是nacos上面的Data ID 

 *        Data ID:類似文件名

 *  4)、配置分組:

 *      默認所有的配置集都屬於:DEFAULT_GROUP;

*  可以根據需要,自行再建組

 * 項目中的使用:每個微服務創建自己的命名空間,使用配置分組區分環境,dev,test,prod

 * 3、同時加載多個配置集

 * 1)、微服務任何配置信息,任何配置文件都可以放在配置中心中

 * 2)、只需要在bootstrap.properties說明加載配置中心中哪些配置文件即可

 * 3)、@Value,@ConfigurationProperties。。。

 * 以前SpringBoot任何方法從配置文件中獲取值,都能使用。

 * 配置中心有的優先使用配置中心中的,

*

*例如

*#配置命名空間

*#spring.cloud.nacos.config.namespace=c88cfe3a-4a32-420c-be50-c3f086852e6f

*#配置分組(當命名空間按照微服務划分的時候,我們可以建立多個組,用來歸類開發、測試、生產環境)

*#spring.cloud.nacos.config.group=dev

 */

下面開始具體使用

1.引入依賴

<!--nacos配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.創建一個bootstrap.properties文件

spring.application.name=項目名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3.在登錄進127.0.0.1:8848/nacos的那個界面后,添加配置

配置的名稱,其實在項目啟動的時候,即可知道nacos默認讀取項目的配置是項目名.properties,所以添加配置的時候,也可以直接項目名.properties的形式添加。(yml也可以),並在里面添加配置信息。

4.在bootstrap.properties里面引入nacos上面的配置(具體可以根據實際場景,決定怎么使用命名空間,我下面的是以服務作為命名空間,組作為dev、test、prod的區分)

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置命名空間
spring.cloud.nacos.config.namespace=c88cfe3a-4a32-420c-be50-c3f086852e6f
#配置分組
spring.cloud.nacos.config.group=dev

5.獲取配置

SpringBoot任何方法從配置文件中獲取值,都能使用。

 

傳統的一個yaml里面可能配置了數據源、mybatis、redis等相關信息的配置集,那么現在有了命名空間和組的概念,我們可以將其分離,比如datasource.yml,mybatis.yml等,隨后在bootstrap.properties里面一個個引入即可,如下面所示。這樣還有一個好處是我這個datasource.yml可以實現共享,倘若微服務沒有分庫,那么可以多個微服務引用同一個數據源,還是比較方便的。

spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
#動態刷新,這樣在nacos上面更改配置的話,就可以實時刷新了,默認值是false
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

 

 

總結:個人而言,覺得nacos的服務注冊發現以及配置管理還是挺不錯的,自己也在慢慢摸索,繼續努力吧!

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM