前言
在妹子圖微服務架構中,注冊中心是核心的基礎服務之一。相信不少小伙伴都用過 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
。服務拆分以后也就意味着會產生眾多相同的配置參數文件,比如 Redis
、DataSource
以及文件存儲配置等等。這時候我們可以通過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
),用戶能夠使用命令行參數配置的方式,隨意使用這兩種數據存儲模式。
文章來源:爪哇筆記