:::tips 随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:

  • 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏
  • 时效性:修改配置,需要重启服务才能生效
  • 局限性:无法支持动态调整:例如日志开关、功能开关

因此,我们需要配置中心来统一管理配置文件,修改配置后即可立即生效
image.png

配置中心是一个用于集中管理应用程序配置的系统,它允许应用程序在运行时动态获取其配置信息,而无需重新部署 :::

配置中心选型

功能点 Spring Cloud Config Apollo Nacos
开源时间 2014.9 2016.5 2018.6
配置实时推送 支持(Spring Cloud Bus) 支持(HTTP长轮询1S内) 支持(HTTP长轮询1S内)
版本管理 支持(Git) 支持 支持
配置回滚 支持(Git) 支持 支持
灰度发布 支持 支持 支持
权限管理 支持 支持 支持
多集群 支持 支持 支持
多环境 支持 支持 支持
监听查询 支持 支持 支持
多语言 只支持java Go、C++、java、Python、PHP、.net、OpenAPI Python、Java、Node.js、OpenAPI
单机部署 Config-server+Git+Spring Cloud Bus(支持配置实时推送) Apollo-quikstart+MySQL Nacos单节点
分布式部署 Config-server+Git+MQ(部署复杂) Config+Admin+Portal+MySQL(部署复杂) Nacos+MySQL(部署简单)
配置格式校验 不支持 支持 支持
通信协议 HTTP和AMQP HTTP HTTP
数据一致性 Git保证数据一致性,Config-server从Git读数据 数据库模拟消息队列,Apollo定时读消息 HTTP异步通知
单机读 7(限流所致) 9000 15000
单机写 5(限流所致) 1100 1800
3节点读 21(限流所致) 27000 45000
3节点写 5(限流所致) 3300 5600
文档 详细 详细 有待完善(目前只有java开发相关文档)