Java 杂谈技术干货

配置中心篇——统一配置中心选型对比

2019-04-19  本文已影响44人  爱情小傻蛋

为什么需要集中配置

程序的发展,需要引入集中配置

已有zookeeper、etcd还需要引入吗

有哪些开源配置中心

  1. spring-cloud/spring-cloud-config
    https://github.com/spring-cloud/spring-cloud-config
    spring出品,可以和spring cloud无缝配合

  2. 淘宝 diamond
    https://github.com/takeseem/diamond
    已经不维护

  3. disconf
    https://github.com/knightliao/disconf
    java开发,百度,业界使用广泛

  4. ctrip apollo
    https://github.com/ctripcorp/apollo/
    Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。

配置中心对别

功能特性

我们先从功能层面来对别

功能点 优先级 spring-cloud-config ctrip apollo disconf 备注
静态配置管理 基于file 支持 支持
动态配置管理 支持 支持 支持
统一管理 无,需要github 支持 支持
多环境 无,需要github 支持 支持
本地配置缓存 支持 支持
配置锁 支持 不支持 不支持 不允许动态及远程更新
配置校验 如:ip地址校验,配置
配置生效时间 重启生效,或手动refresh生效 实时 实时 需要结合热加载管理, springcloudconfig需要 git webhook+rabbitmq 实时生效
配置更新推送 需要手工触发 支持 支持
配置定时拉取 支持 配置更新目前依赖事件驱动, client重启或者server端推送操作
用户权限管理 无,需要github 支持 支持 现阶段可以人工处理
授权、审核、审计 无,需要github 支持 现阶段可以人工处理
配置版本管理 Git做版本管理 界面上直接提供发布历史和回滚按钮 操作记录有落数据库,但无查询接口
配置合规检测 不支持 支持(但还需完善)
实例配置监控 需要结合springadmin 支持 支持,可以查看每个配置在哪些机器上加载
灰度发布 不支持 支持 不支持部分更新 现阶段可以人工处理
告警通知 不支持 支持,邮件方式告警 支持,邮件方式告警
依赖关系 不支持 不支持 不支持 配置与系统版本的依赖系统运行时的依赖关系

技术路线兼容性

引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。我们的java项目以SpringBoot为主,需要重点关注springboot支持性。

功能点 优先级 spring-cloud-config ctrip apollo disconf 备注
SpringBoot支持 原生支持 支持 与spring boot无相关
SpringCloud支持 原生支持 支持 与spring cloud无相关
客户端支持 Java Java、.Net java
业务系统侵入性 侵入性弱 侵入性弱 侵入性弱,支持注解及xml方式
依赖组件 Eureka Eureka zookeeper

可用性与易用性

引入配置中心后,所有的应用都需要依赖配置中心,因此可用性需要重点关注,另外管理的易用性也需要关注。

功能点 优先级 spring-cloud-config ctrip apollo disconf 备注
单点故障(SPOF) 支持HA部署 支持HA部署 支持HA部署,高可用由zookeeper保证
多数据中心部署 支持 支持 支持
配置获取性能 unkown unkown(官方说比spring快)
配置界面 无,需要通过git操作 统一界面(ng编写) 统一界面

最终选择

综上,ctrip apollo是较好的选择方案,最终选择apollo。

部署情况

上一篇 下一篇

猜你喜欢

热点阅读