SpringCloud 之 Nacos 注冊配置中心


前言

在妹子圖微服務架構中,注冊中心是核心的基礎服務之一。相信不少小伙伴都用過 Dubbo 這個流行分布式框架,很久之前微服務還沒這么盛行,Dubbo就提供了比較完善的服務治理功能,而服務治理的實現主要依靠的就是注冊中心。大家接觸更多的可能Zookeeper,那會應該是Dubbo服務的標配,直到現在應該也有不少公司在使用Dubbo+Zookeeper的服務治理模式。今天擼主給大家推薦一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台 Nacos

架構

注冊中心

阿里巴巴 Nacos 新版本支持權限控制,開發者可以通過創建用戶角色關系對服務接入進行控制。

 

網關 pom.xml 引入:

<dependencies>
         <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
</dependencies>

注冊中心配置:

server:
  port: 8080
spring:
  profiles:
    active: dev
  application:
    name: tools-gateway
  cloud:
    nacos:
      config:
        namespace: tools # 用於進行租戶粒度的配置隔離
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools # 支持賬號密碼認證
        password: 123456
      discovery:
        namespace: tools # 用於進行租戶粒度的配置隔離
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools # 支持賬號密碼認證
        password: 123456
    gateway:
      routes:
        - id: sys
          uri: lb://tools-sys
          predicates:
            - Path=/api/sys/**
          filters:
            - StripPrefix=2
        - id: weChat
          uri: lb://tools-meizi
          predicates:
            - Path=/api/meizi/**
          filters:
            - StripPrefix=2

妹子圖系統管理配置文件 bootstrap.yml

server:
  port: 8082
spring:
  profiles:
    active: dev
  application:
    name: tools-sys
  cloud:
    nacos:
      config:
        namespace: tools
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456
      discovery:
        namespace: tools
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456

同理再配置一個妹子圖小程序后台接口服務,啟動成功打開Nacos控制台,若出現以下服務名稱,說明配置成功。

配置中心

Nacos不僅提供了動態服務發現功能,還實現了配置中心管理,這樣我們就無需再引入Spring Cloud 家族的 Spring Cloud Config。服務拆分以后也就意味着會產生眾多相同的配置參數文件,比如 RedisDataSource以及文件存儲配置等等。這時候我們可以通過Nacos的配置管理來實現配置參數共享。

 

比如妹子圖小程序服務想引入 redis 和數據源配置,可以通過以下方式引入:

server:
  port: 8081
spring:
  profiles:
    active: dev
  application:
    name: tools-meizi
  cloud:
    nacos:
      config:
        namespace: tools # 用於進行租戶粒度的配置隔離
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456
        shared-dataids: redis-${spring.profiles.active}.yml,datasource-${spring.profiles.active}.yml
        refreshable-dataids: redis-${spring.profiles.active}.yml,datasource-${spring.profiles.active}.yml
      discovery:
        namespace: tools # 用於進行租戶粒度的配置隔離
        group: tools-${spring.profiles.active}
        server-addr: 127.0.0.1:8848
        username: tools
        password: 123456

阿里巴巴 Nacos Config 目前提供了三種拉取配置的方式:

  • A: 通過 spring.cloud.nacos.config.shared-dataids 支持多個共享 Data Id 的配置

  • B: 通過 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多個擴展 Data Id 的配置

  • C: 通過內部相關規則(應用名、應用名+ Profile )自動生成相關的 Data Id 配置

當三種方式共同使用時,他們的一個優先級關系是:A < B < C

小結

阿里巴巴 Nacos還是很香的,新的版本不再強依賴MySql數據庫,而是內嵌存儲數據源(Apache Derby),用戶能夠使用命令行參數配置的方式,隨意使用這兩種數據存儲模式。

 

文章來源:爪哇筆記


免責聲明!

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



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