點擊▲關注 “爪哇筆記” 給公衆號標星置頂
更多精彩 第一時間直達
前言
在妹子圖微服務架構中,註冊中心是核心的基礎服務之一。相信不少小夥伴都用過 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
),用戶能夠使用命令行參數配置的方式,隨意使用這兩種數據存儲模式。
▲掃一掃回覆【妹子圖】獲取源碼
你點的每個在看,我都認真當成了喜歡