需求说明
项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更新配置文件信息,解决以上问题。
配置中心特性
注册中心 | 配置存储 | 时效性 | 数据模型 | 维护性 | 优点 | 缺点 |
---|---|---|---|---|---|---|
disconf | zookpeer | 实时推送 | 支持传统的配置文件模式,亦支持KV结构数据 | 提供界面操作 | 基于分布式的Zookeeper来实时推送稳定性、实效性、易用性上均优于其他 | 源码较多,阅读和使用起来相对较复杂 |
zookpeer | zookpeer | 实时推送 | 支持传统的配置文件模式,亦支持KV结构数 | 命令操作 | 实时推送稳定性、实效性 | 开发量大 |
diamond | mysql | 每隔15s拉一次全量数据 | 只支持KV结构的数据 | 提供界面操 | 简单、可靠、易用 | 数据模型不支持文件,使用不方便 |
Spring Cloud Config | git | 人工批量刷新 | 文件模式 | git操作 | 简单、可靠、易用 | 需要依赖GIT,并且更新GIT |
选择分析
- 首选为
disconf
,可支持KV存储以及配置文件形式存储,使用和开发更为简便。并且本身也是基于zookpeer的分布式配置中心开发,方便部署使用,并且支持实时更新通知操作,但是部署相对复杂。 diamond
基本可以放弃,一般做KV的存储配置项,做配置文件不是很好的选择。Spring Cloud Config
因为依赖git,使用局限性较大,需要在各个环境中安装git,并且不支持KV存储,功能方面略差于disconf
。
初步推荐disconf
官网地址:http://disconf.readthedocs.io/zh_CN/latest/
开源地址:https://github.com/knightliao/disconf
部署方法:http://disconf.readthedocs.io/zh_CN/latest/install/src/02.html
SpringBoot的demo:https://github.com/knightliao/disconf-demos-java/tree/master/disconf-spring-boot-demo
Disconf是百度开源出来的一款基于Zookeeper的分布式配置管理软件。目前很多公司都在使用,包括滴滴、百度、网易、顺丰等公司。通过简单的界面操作就可以动态修改配置属性,还是很方便的。使用Disconf后发现的一大好处是省却应用很多配置,而且配置可以自动load,实时生效。
Disconf优点总结如下:
部署简单:同一个上线包,无须改动配置,即可在多个环境中上线
部署动态化:更改配置,无需重新打包或重启,即可实时生效
统一管理:提供web平台,统一管理多个环境多个产品的所有配置