目前市场上常用的配置中心有Spring Cloud Config、Apollo、disconfi及Nacos,每个中间件的能力相似,又存在部分偏差,我直接用的排除法
- Spring Cloud Config已经不维护了,所以第一个排除
- 至于disconf
很久都不维护了,如果用过的还好,我没用过。
说实话,剩下的就是Nacos了,看看功能点:
功能点 | Spring Cloud Config | Apollo | Nacos |
---|---|---|---|
开源时间 | 2014.9 | 2016.5 | 2018.6 |
配置实时推送 | 支持(基于Spring Cloud Bus) | 支持(Http长轮询1s内) | 支持(Http长轮询1s内) |
版本管理 | 支持 | 支持 | 支持 |
配置回滚 | 支持 | 支持 | 支持 |
灰度发布 | 支持 | 支持 | 支持 |
权限管理 | 支持 | 支持(细) | 支持(较粗) |
多集群 | 支持 | 支持 | 支持 |
多环境 | 支持 | 支持 | 支持 |
监听查询 | 支持 | 支持 | 支持 |
多语言 | 只支持java | Go、C++、Python、PHP、Java、.Net、OpenAPI | Python、CPP、Java、NodeJs、OpenAPI |
多语言 | 只支持java | Go、C++、Python、PHP、Java、.Net、OpenAPI | Python、CPP、Java、NodeJs、OpenAPI |
单机部署 | Config-Server+Git+MQ(部署复杂) | Config(2)+Admin(2)+Portal(2)+Mysql(部署复杂) | Nginx+Nacos(3)+Mysql(部署简单) |
配置格式校验 | 不支持 | 支持 | 支持 |
通信协议 | Http和AMQP | 数据库模拟消息队列,Apollo定时读消息 | Http异步通知 |
单机读 | / | 9k | 15k |
单机写 | / | 1.1k | 1.8k |
3节点读 | / | 27k | 45k |
3节点写 | / | 3.3kk | 56k |
根据以上标注,Nacos不存在比较大的短板,唯一的短板可能就是权限粒度不是非常细,其他的长处很多,比如部署简单,性能好等,由于我使用的是Spring Cloud Alibaba,本身Nacos就是Alibaba的,所以最终选择就是Nacos做为配置中心