前言
在微服务架构中,注册中心是核心的基础服务之一。相信不少同学都用过 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
系统管理配置文件 bootstrap.yml:
erver:
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不仅提供了动态服务发现功能,还实现了配置中心管理,这样我们就无需再引入Spring Cloud 家族的 Spring Cloud Config。
服务拆分以后也就意味着会产生众多相同的配置参数文件,比如 Redis、DataSource以及文件存储配置等等。这时候我们可以通过Nacos的配置管理来实现配置参数共享。
阿里巴巴 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 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
阿里巴巴 Nacos还是很香的,新的版本不再强依赖MySql数据库,而是内嵌存储数据源(Apache Derby),用户能够使用命令行参数配置的方式,随意使用这两种数据存储模式。