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),用戶能夠使用命令行參數配置的方式,隨意使用這兩種數據存儲模式。


▲掃一掃回覆【妹子圖】獲取源碼

你點的每個在看,我都認真當成了喜歡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章