配置中心比较
前言
Github:https://github.com/HealerJean
一、常见配置中心
| 配置中心 | 出处 | 地址 |
| ————————- | ———————————————————— | ————————————————— |
| spring
-cloud
-config
| ` spring 出品,可以和
spring
cloud 无缝配合 | https://github.com/spring-cloud/spring-cloud-config |
|
disconf |
java 开发,蚂蚁金服技术专家发起,业界使用广泛 | https://github.com/knightliao/disconf |
|
apollo |
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。 | https://github.com/ctripcorp/apollo/ |
|
Lion | 美团自研,内部使用,功能强大 | |
|
DUCC` | 京东自研,内部使用,功能强大 | |
二、功能对比
Ducc |
**disconf ** |
**ctrip apollo ** |
**spring-cloud-config ** |
nacos |
|
---|---|---|---|---|---|
厂商 | 京东 | 百度 | 携程 | Spring |
阿里巴巴 |
集群 | 支持 | 支持 | 支持 | 支持 | 支持 |
数据一致性 | 最终一致 | 最终一致 | 最终一致 | 最终一致 | 强一致性 |
配置存储 | Mysql |
Mysql |
Mysql |
Git / svn / 本地 |
MySQL / Embedded DB |
客户端通信协议 | http |
Zookeeper |
http |
http |
HTTP / gRPC |
客户端更新模式 | 长轮训拉取&定时拉取 | Zookeeper 推送 |
长轮训&定时拉取 | 启动时拉取,手动触发 | 主动推送 |
客户端更新实时性 | 准实时 | 实时 | 准实时 | 重启生效,或刷新触动生效 | 准实时 |
客户端缓存 | 支持 | 支持 | 支持 | 不支持 | 支持支持 |
客户端容灾策略 | 本地文件 | 本地文件 | 本地文件 | 重启会受到影响 | 本地文件 |
客户端鉴权 | application & token |
一般 | application & token |
用户名&密码 | 支持 |
客户端读写 | 读 | 读 | 读 | 读 | 读 |
客户端spring 集成 |
完善 1、支持 xml 与注解+配置文件两种创建方式2、可修改 Spring 配置环境,可以支持 Spring 原生的Value注解与 xml 配置符 |
一般 1、只用 xm l 创建配置实例,需要要配置框架本身提供的注解来获取配置 |
较好 1、支持 xml 与注解+配置文件两种创建方式,但配置的方式并不方便2、可修改 Spring 配置环境,可以支持 Spring 原生的 Value 注解与 xml 配置符 |
原生 | |
客户端注解支持 | 完善 1、支持 Spring 原生注2、框架自身注解 3、可以支持自定义注解 |
一般只支持框架自身注解 | 较好 1、支持 Spring 原生注解2、框架自身注解 |
原生 | |
客户端代码入侵性 | 非常弱 1、支持 Spring @Value 2、支持配置文件监听方式修改 bean 属性,做到零入侵 |
强配置必须用框架中的注解方式,强编码到代码中 | 弱 1、支持 Spring @Value 注解 |
弱 | |
客户端多配置源支持 | 完善1、静态配置 2、系统配置 3、 ucc 动态配置4、自定义配置(插件式扩展,如:zk扩展、 consol 扩展) |
较好 1、静态配置 2、远程配置 |
较好 1、静态配置 2、远程配置 |
较好 1、本地 properties 文件2、远程配置 |
|
客户端数据绑定 | 完善 1、基础类型+数组+集合+ Date + Enum + File + json + xml 2、插件式扩展,可支持所有数据格式 |
一般只支持基础类型 | 一般基础类型 + json |
较好 Spirng 原生环境支持 |
|
开放 API |
完善 | 一般 | 一般 | 一般 | |
管理界面 | 完善 | 一般 | 一般 | 一般 | |
权限管理 | 完善空间和配置对应用授权,可继承 | 一般 | 较完善空间对应用授权 | 基于git管理 | |
版本管理 | 支持历史版本回滚 | 不是很完善 | 支持历史版本回滚 | 基于git管理 | |
安全发布 | 工作区方式编辑,一键发布,统一下发生效 | 配置项或配置文件单个发布 | 一键发布,统一下发生效 | 手动refresh | |
灰度发布 | 不支持部分更新 | 不支持部分更新 | 支持 | 不支持 | |
预案切换 | 支持配置预案切换 | 无 | 无 | 无 | |
多环境 | 完善,支持合并 | 较完善,不支持合并 | 较完善,不支持合并 | 不支持 | |
部署依赖组件 | 无 | Zookeeper |
Eureka |
Eureka |
MySQL / Embedded DB |