开源配置中心对比选型

Wu Jun 2020-03-17 15:08:40
10 微服务 > 2 配置中心

1 开源配置中心对比矩阵

调研于 18 年 10 月

重要性 spring-cloud-config ctrip apollo 百度 disconf 淘宝 diamond
概况 Github 地址
929star,688fork
始于 2014,最后更新 8 天前
Github地址
6007star,2187fork
始于2016,最后更新 3天前
文档见 github wiki
Github 地址
3935star,1880fork
文档地址
始于 2014,作者去滴滴了,2016 停止维护
Github
203star,247fork
官方开源地址
团队博客
始于 2012,2014 停止维护
外部依赖 RabbitMQ 或 Kafka MySQL Mysql、zookeeeper、Redis
功能特性
静态配置管理 基于 file 支持 支持
动态配置管理 支持 支持 支持
统一管理 无,需要 github 支持 支持
多维度管理 无,需要github 支持
以项目为坐标,每项目下多环境
支持
以环境为坐标,一环境下多项目
本地配置缓存 支持 支持
配置生效时间 重启生效,或手动 refresh 生效。
实时生效需要 git webhook + rabbitmq
实时 实时
配置更新推送 需要手工触发 支持 支持
配置定时拉取 支持 依赖事件驱动,client 重启或者 server 端推送操作
用户权限管理 无,需要 github 支持 支持
授权、审核、审计 无,需要 github 支持
配置版本管理 Git 做版本管理 界面上直接提供发布历史和回滚按钮 操作记录有落数据库,但无查询接口
配置合规检测 不支持 支持(但还需完善)
实例配置监控 需要结合springadmin 支持 支持,可以查看每个配置在哪些机器上加载
灰度发布 不支持 支持 不支持
告警通知 不支持 支持,邮件方式告警 支持,邮件方式告警
技术路线
支持SpringBoot 原生支持 支持 与 spring boot 无相关
支持 SpringCloud 原生支持 支持 与 spring cloud 无相关
客户端支持 Java Java、.Net java
业务系统侵入性 侵入性弱 侵入性弱 侵入性弱
依赖组件 Eureka Eureka zookeeper
可用性
单点故障(SPOF) 支持 HA 部署 支持 HA 部署 支持 HA 部署,高可用由 zookeeper 保证
多数据中心部署 支持 支持 支持
配置获取性能 unkown unkown(官方说比spring快)
易用性
配置界面 无,需要通过 git 操作 统一界面(ng 编写) 统一界面
配置文档 配置数据库、git地址、kafka 配置数据库信息 配置数据库、redis、zookeeper
案例

2 最终选择

根据上述对比,主要在 Spring Cloud Config 与 Ctrip Apollo 之间选择,最终选择了Apollo,主要原因是: