Nacos作为Alibaba开源的一款分布式中间件,其提供了丰富的能力。这里就其作为配置中心方面进行实践
配置Nacos服务
这里利用Docker搭建一个Nacos服务节点
1 | docker run -d -p 8848:8848 \ |
基本实践
直接向服务引入Nacos作为配置中心所需的spring-cloud-starter-alibaba-nacos-config依赖,如下所示
1 | <dependencyManagement> |
在bootstrap.yml配置文件中,添加配置中心的地址信息
1 | spring: |
而在application.yml配置文件中,定义应用级相关信息。其中,这里开启Actutor的所有端点
1 | server: |
这里直接提供一个Controller以便于测试。其中添加@RefreshScope注解以实现配置的动态更新
1 |
|
这里对Nacos在配置中心应用场景下的配置文件名称规则,做如下介绍。其使用的配置文件名称规则如下所示,即对于本例而言,其所使用的配置文件名为 order-dev.yaml
1 | ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} |
特别地,如果未配置spring.profile.active项,则配置文件的规则为
1 | ${spring.application.name}.${spring.cloud.nacos.config.file-extension} |
现在进入Nacos的Web管理页面 http://localhost:8848/nacos ,其中缺省用户名、密码均为nacos。建立相关配置文件,如下所示。其中Data ID即为配置文件的名称
现在,启动该服务以进行测试,如下所示符合预期
现在我们通过Nacos的Web页面修改配置内容,可以看到服务会自动获取最新配置,而无需重启服务。如下所示符合预期
配置的分级管理
基于分组Group
事实上,Nacos还可以通过Group分组实现配置文件的分级管理。如下所示,在bootstrap.yml配置文件指定group为TEST_GROUP
1 | spring: |
然后在Nacos的Web页面添加一个新的配置文件,其Data ID依然是order-dev.yaml,只不过该配置文件所属分组为TEST_GROUP
现在重启服务,验证下其所获取的配置。可以看到其根据Group、Data ID共同定位到相应的配置文件。其中,spring.cloud.nacos.config.group配置项默认为DEFAULT_GROUP
基于命名空间namespace
在Group之上其还可以有一级目录——即命名空间namespace。类似地,首先在Nacos的Web页面建立一个新的命名空间namespace-2,如下所示。其中命名空间ID为 a93c8495-7840-40ac-b72f-47e5fc93eff8
然后在namespace-2命名空间下,建立一个Group为TEST_GROUP,Data ID为order-dev.yaml的配置文件,其内容如下所示
在bootstrap.yml配置文件通过spring.cloud.nacos.config.namespace设置命名空间ID
1 | spring: |
现在重启服务,验证下其所获取的配置。可以看到其根据Namespace、Group、Data ID共同定位到相应的配置文件。其中,spring.cloud.nacos.config.namespace配置项默认为public