本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。
配置中心
业务上的配置,功能开关,服务治理上对弱依赖的降级,甚至数据库的密码等,都可能用到动态配置中心。
在没有专门的配置中心组件时,我们使用硬编码、或配置文件、或数据库、缓存等方式来解决问题。
硬编码修改配置时需要重新编译打包,配置文件需要重启应用,数据库受限于性能,缓存丧失了及时性。
可能都不完美,但能从中总结出配置中心的需求,相对来说还是比较明确:
- 能够存储、获取并监听配置(必须)
- 配置变更时能及时推送给监听者(必须)
- 有一个可视化的查看变更配置的控制台(必须)
- 配置变更可灰度执行(加分)
- 配置变更可回滚(加分)
目前使用最多的配置中心可能是携程开源的Apollo,还有Spring Cloud Config、阿里开源的Nacos、百度的Disconf等。
Nacos配置中心
Nacos
是Naming and Configuration Service
的缩写,从名字上能看出它重点关注的两个领域是Naming
即注册中心和Configuration
配置中心。
本文讲解nacos的配置中心的架构设计和实现原理,基于2.0.0
版本(注:2.0.0版本与1.x版本区别较大)