一、为什么选择配置中心
1.项目改为微服务形式了所以用配置中心是必然
2.如果不用配置中心,配置文件会随着环境的改变和项目的增多而导致管理起来很麻烦
如图是之前的配置文件:
首先每个微服务有多个环境配置信息,然后同时又有N个微服务,如果其中一个IP或者配置改变,那么所有项目都要改,这个工作量可想而知。而用了配置中心所有配置都在服务端,配置更改可以通知到每个服务中,这就使得维护配置变得非常简单。
例如现在的配置如图:
配置中心管理后台如图:
二、如何选择适合我们的配置中心
目前市面上用的比较多的配置中心有:(按开源时间排序)
Disconf
2014年7月百度开源的配置管理中心,同样具备配置的管理能力,不过目前已经不维护了,最近的一次提交是两年前了。
Spring Cloud Config
2014年9月开源,Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
Apollo
2016年5月,携程开源的配置管理中心,具备规范的权限、流程治理等特性。
Nacos
2018年6月,阿里开源的配置中心,也可以做DNS和RPC的服务发现。
根据网络资料查询对比几款配置中心的区别如下:
其实说白了配置中心要满足以下几个核心点功能:
1. 客户端能通过一定方式从配置中心获取到相应配置
(Nacos支持springboot,可以用注解注入属性或者配置文件,使用DataId区分配置)
2. 配置中心的配置改动能被客户端监听并且获取改动值
(Nacos使用长连接方式监听服务端数据改动)
3. 配置中心应该支持数据持久化,防止数据丢失
(Nacos支持mysql数据库存储配置)
4. 配置中心作为所有应用的配置核心点应该支持高可用部署
(Nacos支持集群部署,并通过域名 + VIP模式提高稳定性和灵活性)
5. 配置中心应当提供环境隔离功能
(Nacos可以通过“命名空间”区分环境)
通过以上考虑选择Nacos比较合适,Nacos基本能满足我们的需求,并且Nacos脱胎于阿里云的的商业化配置中心ACM,目前由阿里巴巴主导维护,项目比较火热,能够支持使用者反馈。
参考文档: