nacos-配置中心
2021/4/28 10:25:21
本文主要是介绍nacos-配置中心,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、配置中心
nacos有两大功能:注册中心和配置中心
nacos的中文文档:https://nacos.io/zh-cn/docs/open-api.html
1、配置文件的缺点
(1)生产环境的数据库的用户名和密码都配置在配置文件中,所有开发人员都能看到密码,这就造成了一定的安全隐患;
(2)配置文件修改之后服务必须重启才可以生效,若生产环境上有一个开关需要打开,修改完配置文件再重启服务,那风险太大了;
2、配置中心的特点
(1)实现不同环境不同配置的统一管理;
(2)配置属性修改后自动刷新;
二、配置中心的使用
1、配置中心
步骤1:增加maven依赖
<!-- 配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-nacos-config</artifactId> </dependency>
步骤2:增加一个名为 bootstrap.yml 配置文件
bootstrap.yml 文件优先于 application.yml 文件加载;
bootstrap.yml 文件的内容,如下: spring: cloud: nacos: config: server-addr: 192.168.172.20:8848 file-extension: yml application: name: order-center profiles: active: dev
(1)配置文件的说明:
spring.cloud.nacos.config.server-addr=192.168.1.1:8848,表示微服务从哪个配置中心上拉取配置;
spring.cloud.nacos.config.file-extension=yml,表示文件的扩展名;
spring.application.name=order-center,表示当前服务向配置中心索要 order-center 的配置;
spring.profiles.active=dev,表示像配置中心索要哪个环境的配置;
索要文件的格式为:
{spring.application.name}-{spring.profiles.active}.{spring.cloud.nacos.config.file-extension}
(2)以上配置,向配置中心拉取的配置的 dataId 的名称为: order-center-dev.yml
步骤3:在 nacos 的配置列表中增加一个 Data ID 名为 order-center-dev.yml 的配置
技术分享图片
步骤4:在Controller类上增加 @RefreshScope 注解,使配置进行动态刷新
@RestController @Slf4j @RefreshScope public class OrderController { @Value("${env.name}") private String envName; @Autowired private ProductCenterFeignApi productCenterFeignApi; @GetMapping("/v1/getProduct/{id}") public String getProduct(@PathVariable("id") String id) { log.info("------- envName: {} -------", envName); Person person = productCenterFeignApi.getPerson(id); return person.toString(); } }
2、通用配置
(1)同一个服务的通用配置
通常我们的开发在开发环境、测试环境、生产环境都有很多相同的配置,使用注册中心怎么配置呢?
在配置中心新增一个不带 profiles 的配置,格式如下:
{spring.application.name}.{spring.cloud.nacos.config.file-extension}
那针对以上的配置,Data ID 的名称命名为:order-center.yml
技术分享图片
启动 order-center 服务之后,打印日志如下:
技术分享图片
我们创建的 order-center.yml 配置就是通用配置,不管启动 dev,还是prod,都会加载该配置中的内容。
配置的优先级:精准配置 会覆盖 与通用配置 相同的配置,然后再和通用配置互补。
(2)不同服务的通用配置
我们两个服务 order-center 和 product-center 都会注册到同一个注册中心上,那么他们的注册中心配置就是一样的,我们可以给不同服务设置通用配置。
步骤1:配置文件中增加 shared-dataids 和 refreshable-dataids 配置
spring: cloud: nacos: config: server-addr: 192.168.172.20:8848 file-extension: yml shared-dataids: common.yml, common2.yml refreshable-dataids: common.yml, common2.yml
同一个配置项先加载后面的,可以在服务启动类中查看。
b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name=‘NACOS‘, propertySources=[ NacosPropertySource {name=‘order-center-dev.yml‘}, NacosPropertySource {name=‘order-center.yml‘}, NacosPropertySource {name=‘common2.yml‘}, NacosPropertySource {name=‘common.yml‘} 说明:order-center-dev.yml 精准匹配;order-center.yml 同工程不同环境的通用配置;shared-dataids 不同工程通用配置;
步骤2:在nacos的配置列表中新增配置,common.yml 和 common2.yml
技术分享图片
技术分享图片
3、配置回滚
在nacos的配置列表中有一个”历史版本“,可以回滚配置
技术分享图片
4、nacos的密码修改或添加新的用户
(1)maven增加如下依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> (2)java代码对密码进行加密: public static void main(String[] args) { String password = new BCryptPasswordEncoder().encode("password"); System.out.println(password); }
5、连接 Nacos 内置的 apache Derby 数据库
技术分享图片
配置中心 ------- Nacos
原文:https://www.cnblogs.com/yufeng218/p/14071671.html
这篇关于nacos-配置中心的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享