分布式配置中心组件选型介绍

前提介绍

  • 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……
  • 并且对配置的期望也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……
  • 并且随着采用分布式的开发模式,项目之间的相互引用随着服务的不断增多,相互之间的调用复杂度成指数升高,每次投产或者上线新的项目时苦不堪言,因此需要引用配置中心治理。

配置组件选型综合对比

组件/功能

disconf

diamond

springcloud config

apollo

组件/功能

disconf

diamond

springcloud config

apollo

配置存储 zookeeper mysql git mysql
数据时效性 实时推送 每隔15s拉一次全量数据 人工批量刷新 实时推送
数据存储模型 支持传统的配置文件模式,亦支持KV结构数据 只支持KV结构的数 文件模式 集中配置(yaml,properties,kv,xml)
维护性 提供界面操作 提供界面操作 基于git命令操作 提高界面操作
配置界面
单点故障 支持HA部署 支持HA部署 支持HA部署
多数据中心部署 支持 支持 支持 支持
本地缓存 支持 支持 支持
springboot支持 无关 无关 支持 支持
springcloud支持 无关 无关 支持 支持
客户端支持 java java java java,.net,pytho,go...
依赖组件 zookeeper   eureka eureka
系统侵入性
灰度发布 不支持部分更新 不支持 不支持 支持
告警通知 支持、邮件 不支持 不支持 支持 邮件
更新通知 支持 不支持 手动拉取/结合rabbitmq 支持
动态配置更新 支持 支持 支持 支持
权限管理 一般 一般 支持很全面(用户权限、授权,审计)
数据推拉模型 基于Zookeeper的推模型 拉模型 手动刷新 基于http长连接
集群数据同步 基于zookeeper实现对配置更改的实时推送
全局分布式一致性锁来实现主备统一部署、系统异常时的主备自主切换

基于数据库和本地文件
1、server写数据时,先将数据写入mysql,然后写入本地文件
2、client订阅数据时,访问的是本地文件,不查询数据库,这样即使数据库出问题了,仍然不影响client的订阅
3、通过比较client和server的数据的MD5值感知数据变化

全局分布式,基于Eureka作为服务注册中心
组件优点 基于分布式的Zookeeper来实时推送稳定性、实效性、易用性上均优于其他 简单、可靠、易用 简单、可靠、易用 携程开源巨作,功能强大,设计周到,Web界面美观实用,文档比较全。
组件缺点 源码较多,阅读和使用起来相对较复杂 数据模型不支持文件,使用不方便 需要依赖GIT,并且更新GIT 开源时间较早,属于比较新
开源star 4729 263 是springcloud的组件 13797

 

总结:从开源star的支持来说,现在apollo是最高的,所以一般生产环境都是用apollo的比较多.

 

你可能感兴趣的:(Apollo-分布式配置中心)