开源配置中心横向对比

特性\产品

Apollo

Xdiamond

Super-diamond

xxl-conf

disconf

Spring-Cloud-Config

配置存储

最终持久化在mysql

存储在mysql

存储在mysql

同时在ZK与MySQL中存储和备份

存储在mysql

Git、svn、native三种存储模式

更新模式

客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。

客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。

客户端通过watch监听结节

定时拉取

客户端通过watch监听结节

基于Zookeeper的推模型,实时推送

客户端watch

配置读写

只读

只读

只读

只读

只支持实例对配置读

只读

容灾

会在配置client缓存一份配置文件。只要local文件存在,配置中心宕机不会影响到应用的启动和运行。

多级容灾模式,配置数据会dump在本地,避免中心服务挂机时无法使用

配置中心基于Zookeeper集群, 只要集群节点保证存活数量大于N/2+1, 就可保证服务稳定, 避免单点风险。

客户端从配置中心获取到的配置数据后,会周期性缓存到本地快照文件中,当从配置中心获取配置失败时,将会使用使用本地快照文件中的配置数据。

多级容灾模式,优先读取本地配置文件

依赖配置服务器的健康运行。当配置服务器宕机,不会影响在运行中的服务,但会导致新服务无法启动。

配置数据模型

支持properties、xml、yml格式输出

支持KV模式输出(直接注解到bean)、properties和json格式配置文件输出

支持properties

支持KV模式输出(直接注解到bean),xml配置

支持KV模式输出(直接注解到bean),xml配置

直接通过client加载properties或yml文件注入到BeanFactory里。

集群数据同步

Apollo多出一个集群的tag,用来给同一功能的系统在不同的集群里使用其相应的配置(例如,在应用跨数据中心部署时)。在多数据中心部署时,数据完全同步,Meta Server/Portal域名通过slb自动切换到其它存活的数据中心。

基于数据库和本地文件

1、server写数据时,先将数据写入mysql,然后写入本地文件

2、client订阅数据时,访问的是本地文件,不查询数据库,这样即使数据库出问题了,仍然不影响client的订阅

3、通过比较client和server的数据的MD5值感知数据变化

(暂无相关资料)

客户端基于多层设计,核心四层设计如下:

1、API层:提供业务方可直接使用的上层API, 简单易用, 一行代码获取配置信息;同时保证配置的实时性、高性能;

2、Ehcache层:客户端的Local Cache,极大提升API层的性能,降低对ZK集群的压力;首次加载配置、监听配置变更、底层异步周期性同步配置时,将会写入或更新缓存;

3、ZK-Client层:ZK远程客户端的封装,用于加载远程配置、通过NodeDataChanged监听配置变更,提高配置时效性;

4、Mirror-File层:配置数据的本地快照文件,会周期性同步 "Ehcache层" 中的配置数据写入到 "Mirror-File" 中;当无法从配置中心获取配置,如ZK宕机时,将会使用 "Mirror-File" 中的配置数据,提高系统的可用性;

基于zookeeper实现对配置更改的实时推送

全局分布式一致性锁来实现主备统一部署、系统异常时的主备自主切换

通过注册中心,提供配置服务器的集群实现。集群统一指向同一类配置存储模式(官方推荐git或svn;另外采用native的方式时,需要把native模式下的文件路径指向高可用的文件系统目录)

配置中心安全

完备的权限管理,支持Namespace的概念

基于Spring-shiro支持Ldap。

以项目为维度进行配置权限控制,管理员拥有全部项目权限,普通用户只有分配才拥有项目下配置的查看和管理权限

简单的用户权限管理

仅支持用户名、密码,和Vault的token方式来管理配置服务器的安全。

多环境

支持

支持

支持

支持

支持

支持

历史版本

支持

不支持

不支持

支持10个历史版本

支持

支持

灰度发布

支持

支持

不支持

(未研究)

(未研究)

(未研究)

SDK支持语言

Java、.net等,并支持开放的HTTP接口

Java,支持Restful接入

Java

Java

Java

Java

SDK接入难易程度

需按sdk实现框架所需的@Configuration注解类。

需按sdk实现框架所需的@Configuration注解类。

(无研究)

需按sdk实现框架所需的@Configuration注解类。

暂未找到直接使用@Configuration进行配置注入的实现。

SpringCloud子项目,轻松接入当前框架,只需在pom文件引入相关依赖,并在应用启动配置文件加上spring.cloud.config的相关配置即可。

作者

携程

个人开源(思路源自淘宝开源的diamond配置中心)

个人开源(思路源自淘宝开源的diamond配置中心)

个人开源

百度

SpringCloud

其他

注册中心也是用Eureka

~\(≧▽≦)/~

无注册中心

无注册中心

使用zookeeper作为注册中心

使用zookeeper作为注册中心

完全匹配项目所使用的注册中心

        综上分析,从国内应用登记情况来看,Apollo和disconf是最为热门的两个。

        从功能的完备性来看,携程Apollo的功能在配置管理上是最为完备;其二就是Xdiamond,其参考maven的package管理而特别提出了思路相似的配置依赖概念,且增加了一些针对配置中心的metrics、apidocs、webssh和druid监控或运维工具等。

        最后,Spring-Cloud-Config由于其官方特性,接入成本最低,但当前配置功能最弱、且没有配置界面(运维难度将会较大),另外如想把配置持久化到数据库,需额外实现。

 

转载于:https://my.oschina.net/werngin/blog/1865943

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值