开源分布式配置中心选型

热门的开源分布式配置中心对比如下:

 

对比项目 Diamond(阿里2011年) Disconf(百度个人2015) Apollo(携程2016)
配置存储 存储在mysql上 存储在mysql上 mysql
推拉模型 拉模型,每隔15s拉一次全量数据 基于Zookeeper的推模型,实时推送 基于http长连接,实时推送
配置读写 支持实例对配置读写。支持某台实例写配置数据,并广播到其它实例上 只支持实例对配置读。通过在disconf-web上更新配置到达到广播写到所有应用实例

同disconf

容灾 多级容灾模式,配置数据会dump在本地,避免中心服务挂机时无法使用   多级容灾模式,优先读取本地配置文件 多级容灾模式,本地有缓存。
配置
数据模型
只支持KV结构的数据,非配置文件模式 支持传统的配置文件模式(配置文件),亦支持KV结构数据(配置项) 集中配置,本地缓存。
功能特性 需要地址服务器,客户端连接到地址服务器,取回diamond服务器的地址列表 1、对配置进行持久化管理并对外提供restful接
2、注解式编程,需要Spring编程环境
3、支持配置的上传、下载
4、支持分布式环境下的主备竞争

统一管理不同环境、不同集群的配置

配置修改实时生效(热发布)

版本发布管理

灰度发布

权限管理、发布审核、操作审计

客户端配置信息监控

提供Java和.Net原生客户端

提供开放平台API

 

集群
数据同步
基于数据库和本地文件
1、server写数据时,先将数据写入mysql,然后写入本地文件
2、client订阅数据时,访问的是本地文件,不查询数据库,这样即使数据库出问题了,仍然不影响client的订阅
3、通过比较client和server的数据的MD5值感知数据变化
基于zookeeper实现对配置更改的实时推送
全局分布式一致性锁来实现主备统一部署、系统异常时的主备自主切换
全局分布式,基于Eureka作为服务注册中心
优点 简单、可靠、易用 基于分布式的Zookeeper来实时推送稳定性、实效性、易用性上均优于diamond 携程开源巨作,功能强大,设计周到,Web界面美观实用,文档比较全。
缺点 1、无访问修改权限控制
2、对于未来可能要做的基于SOA架构的服务注册发现,功能上有所欠缺
源码较多,阅读和使用起来相对较复杂 较新
使用案例 淘宝内部绝大多数系统的配置,由diamond来进行统一管理。 包括 百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司正在使用! 携程、转转、网易严选、航旅纵横、沪江网、5173、海航等

开源分布式配置中心选型_第1张图片

详细对比,参见官方文档:

1、https://github.com/ctripcorp/apollo/wiki/

2、https://github.com/knightliao/disconf

 

其他开源配置管理中间件

名称 特性
Xdiamond 1、基于数据库做配置存储
2、相对于diamond增加了权限设计,结合Secret key,保证配置的安全
3、配置缓存在本地,防止应用因为网络问题而不能启动
Qconf 1、奇虎 360 内部分布式配置管理工具
2、用C/C++编写,支持c/c++、shell、php、python 等语言
3、应用Zookeeper做集群管理
4、多进程的情况下,QPS 能够达到百万
etcd 1、使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性
Spring Cloud Config Server 主要用于Spring cloud体系
CFG4J

http://www.cfg4j.org/

只支持java,容易和spring集成。

OWNER

http://owner.aeonbits.org/docs/loading-strategies/

只支持java,容易和spring集成。

 

综合对比,我觉得 携程的Apollo 是最先进的,功能最强大和完善,文档也写得清楚。其次是 Disconf,它比Apollo早诞生一年,可能要比Apollo成熟一点,但是Apollo的人气有超越Disconf的趋势,GitHub上的watch和star数量已经接近Disconf了。

 

你可能感兴趣的:(中间件技术)