Diamond则是淘宝开源的一种分布式配置管理服务的实现
disconf是来自百度的分布式配置管理平台,包括百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司正在使用!
对比项目 | diamond | disconf |
配置存储 | 存储在mysql上 | 存储在mysql上 |
推拉模型 | 拉模型,每隔15s拉一次全量数据 | 基于Zookeeper的推模型,实时推送 |
配置读写 | 支持实例对配置读写。支持某台实例写配置数据,并广播到其它实例上 | 只支持实例对配置读。通过在disconf-web上更新配置到达到广播写到所有应用实例 |
容灾 | 多级容灾模式,配置数据会dump在本地,避免中心服务挂机时无法使用 | 多级容灾模式,优先读取本地配置文件 |
配置 数据模型 |
只支持KV结构的数据,非配置文件模式 | 支持传统的配置文件模式(配置文件),亦支持KV结构数据(配置项) |
功能特性 | 需要地址服务器,客户端连接到地址服务器,取回diamond服务器的地址列表 | 1、对配置进行持久化管理并对外提供restful接 2、注解式编程,需要Spring编程环境 3、支持配置的上传、下载 4、支持分布式环境下的主备竞争 |
集群 数据同步 |
基于数据库和本地文件 1、server写数据时,先将数据写入mysql,然后写入本地文件 2、client订阅数据时,访问的是本地文件,不查询数据库,这样即使数据库出问题了,仍然不影响client的订阅 3、通过比较client和server的数据的MD5值感知数据变化 |
基于zookeeper实现对配置更改的实时推送 全局分布式一致性锁来实现主备统一部署、系统异常时的主备自主切换 |
优点 | 简单、可靠、易用 | 基于分布式的Zookeeper来实时推送稳定性、实效性、易用性上均优于diamond |
缺点 | 1、无访问修改权限控制 2、对于未来可能要做的基于SOA架构的服务注册发现,功能上有所欠缺 |
源码较多,阅读和使用起来相对较复杂 |
使用案例 | 淘宝内部绝大多数系统的配置,由diamond来进行统一管理。 | 包括 百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司正在使用! |
其他开源配置管理中间件
名称 | 特性 |
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一致性算法处理日志复制以保证强一致性 |