配置中心之Nacos应用实践
Nacos配置快速入门
创建项目
(1)创建maven项目
新建module,名字为sca-nacos-config,选中父项目01-sca,右键new->module其中的 pom.xml文件内容如下:
1 | pom复制代码<?xml version="1.0" encoding="UTF-8"?> |
(2)创建配置文件
在resource目录下创建bootstrap.yml配置文件(启动优先级最高)代码如下:
1 | yml复制代码#bootstrap.yml加载的优先级要高于application.yml文件 |
(3)启动测试
创建启动类,对环境启动测试,代码如下
1 | java复制代码package com.cy; |
(4)Nacos基本配置
打开nacos配置中心,新建配置,如图所示:
其中Data IDs的值要与bootstrap.yml中定义的spring.application.name的值相同(服务名-假如有多个服务一般会创建多个配置实例,不同服务对应不同的配置实例)。
(5)创建Controller处理器
创建配置中心Controller,也可以将Controller添加到启动类内部,如图所示:
1 | java复制代码package com.cy; |
其中,@RefreshScope的作用是,在配置中心的相关配置发生变化以后,能够及时看到更新
Controller编写好以后,启动配置中心服务,然后进行访问测试。,打开浏览器直接在地址栏输入http://localhost:8080/config/doGetLogLevel,检测输出结果是否为我们配置中配置的信息,如图所示。
地址
1 | bash复制代码http://localhost:8080/config/doGetLogLevel |
因为内部使用了@RefreshScope注解支持配置动态刷新,所以在nacos中进行更改可以动态的改变配置
更改后配置,再次访问发现配置已经改变
Nacos配置管理模型
Nacos 配置管理模型由三部分构成,如图所示:
其中:
- Namespace:命名空间,对不同的环境进⾏隔离,⽐如隔离开发环境和⽣产环境。
- Group:分组,将若⼲个服务或者若⼲个配置集归为⼀组。
- Service/DataId:某⼀个服务或配置集,一般对应一个配置文件。
Nacos中的命名空间一般用于配置隔离,这种命名空间的定义一般会按照环境(开发,生产等环境)进行设计和实现.我们默认创建的配置都存储到了public命名空间,如图所示:
创建新的开发环境并定义其配置,然后从开发环境的配置中读取配置信息,该如何实现呢?
第一步:创建新命名空间,如图所示:
命名空间成功创建以后,会在如下列表进行呈现。
在指定命名空间下添加配置,也可以直接取配置列表中克隆,例如:
克隆成功以后,我们会发现在指定的命名空间中有了我们克隆的配置,如图所示:
此时我们修改dev1命名空间中Data Id的nacos-config配置,如图所示:
修改项目module中的配置文件bootstrap.yml,添加如下配置,关键代码如下:
去namespace中找NamespaceID,添加到配置文件中
1 | yaml复制代码spring: |
其中,namespace后面的字符串为命名空间的id,可直接从命名空间列表中进行拷贝,如图所示:
重启服务,继续刷新http://localhost:8080/config/doGetLogLevel地址。检测输出,看看输出的内容是什么,是否为dev命名空间下配置的内容,如图所示:
1 | bash复制代码http://localhost:8080/config/doGetLogLevel |
我们还可以创建生产环境,依次类推进行设计和实现即可。
分组设计及实现
当我们在指定命名空间下,按环境或服务做好了配置以后,有时还需要基于服务做分组配置,例如,一个服务在不同时间节点(节假日,活动等)切换不同的配置,可以在新建配置时指定分组名称,如图所示:
配置发布以后,修改boostrap.yml配置类,在其内部指定我们刚刚创建的分组,代码如下:
1 | yml复制代码server: |
在NacosConfigController类中添加属性和方法用于获取和输出DEV_GROUP_51配置中设置的线程数,代码如下:
1 | yml复制代码 @Value("${server.tomcat.threads.max:200}") |
然后重启服务,进行测试,检测内容输出,如图所示:
1 | bash复制代码http://localhost:8080/config/doGetServerThreadMax |
共享配置设计及读取
当同一个namespace的多个配置文件中都有相同配置时,可以对这些配置进行提取,然后存储到nacos配置中心的一个或多个指定配置文件,哪个微服务需要,就在服务的配置中设置读取即可。例如:
第一步:在nacos中创建一个共享配置文件,例如:
第二步:在指定的微服务配置文件(bootstrap.yml)中设置对共享配置文件的读取,例如:
见红色区域内容。
1 | yml复制代码spring: |
第三步:在指定的业务类中读取和应用共享配置即可,例如:
1 | java复制代码 @Value("${page.pageSize:50}") |
访问链接
1 | bash复制代码http://localhost:8080/config/config/doGetPageSize |
本文转载自: 掘金