统一配置中心选型对比

整理笔记时发现之前整理的一些东西,分享给大家。

为什么需要集中配置

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

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

已有zookeeper、etcd还需要引入吗

  • 之前的音乐服务项目,通过etcd实现了服务的注册与发现,且一些业务配置也存储到etcd中,通过实践我们收获了集中配置带来的优势
  • 但是etcd并没有方便的UI管理工具,且缺乏权限、审核等机制
  • 最重要的是,etcd和zookeeper通常定义为服务注册中心,统一配置中心的事情交给专业的工具去解决。

有哪些开源配置中心

  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 applo是较好的选择方案,最终选择applo。

  • 支持不同环境(开发、测试、生产)、不同集群
  • 完善的管理系统,权限管理、发布审核、操作审计
  • SpringBoot集成友好 ,较小的迁移成本
  • 配置修改实时生效(热发布)
  • 版本发布管理

部署情况

  • 管理Web:http://config.***.com/
  • 三个环境MetaServer:
    • Dev: config.devmeta.***.com
    • Test: config.testmeta.***.com
    • PRO: config.prometa.***.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap

近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装。Po...

22910
来自专栏听雨堂

Android新手之旅(1) 开发环境的安装

  大致情况:安装Android开发环境,网上有很多的教程,装eclipse,jdk…别的问题都不大,最麻烦的是装sdk,因为安装是一个在线安装过程,而要安装的...

1967
来自专栏快乐八哥

Ubuntu12.04安装QQ for Linux

最近把自己的笔记本安装了一个Ubuntu,现在的笔记本有2个系统。一个是Window XP,一个是Ubuntu 12.04。其实就是安装的双系统,因为自己工作是...

3675
来自专栏hadoop学习

实用贴:hadoop系统下载安装教程

在前几篇的文章中分别就虚拟系统安装、LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤。

1062
来自专栏ytkah

认证服务号可通过模板消息向用户发送重要的服务通知

  2014年08月14日微信团队向具有支付权限的公众号开放了模板消息,使用效果良好,现扩大模板消息开放范围,向认证后的服务号进行开放。所有服务号都可以在功能-...

3165
来自专栏coding

mysql自动备份并上传至git仓库

1923
来自专栏电光石火

springboot 定制个性 banner

使用spring boot 开发时,当程序启动的时候控制台会输出由字符组成的Spring符号。这个是SpringBoot为自己设计的Banner:

821
来自专栏全华班

一款免费、开源,使用JAVA语言开发管理系统

基于SpringBoot2.0的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

1.4K2
来自专栏自由而无用的灵魂的碎碎念

老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?

先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变。官方只支持到windows7,并且官方说明该型号不在官方...

931
来自专栏林德熙的博客

文件传输

最好用的还是 Utorrent ,这个软件可以用来做种也可以用来下载。可以把自己的文件通过做种分享给小伙伴,一般在局域网分享使用 utorrent 是很好的。

3192

扫码关注云+社区

领取腾讯云代金券