前言
在妹子图微服务架构中,注册中心是核心的基础服务之一。相信不少小伙伴都用过 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
),用户能够使用命令行参数配置的方式,随意使用这两种数据存储模式。
文章来源:爪哇笔记