继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

统一配置中心选型对比

芜湖不芜
关注TA
已关注
手记 475
粉丝 76
获赞 339

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

为什么需要集中配置

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

  • 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……

  • 并且对配置的期望也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……

  • 并且随着采用分布式的开发模式,项目之间的相互引用随着服务的不断增多,相互之间的调用复杂度成指数升高,每次投产或者上线新的项目时苦不堪言,因此需要引用配置中心治理。

已有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-configctrip apollodisconf备注
静态配置管理基于file支持支持
动态配置管理支持支持支持
统一管理无,需要github支持支持
多环境无,需要github支持支持
本地配置缓存支持支持
配置锁支持不支持不支持不允许动态及远程更新
配置校验如:ip地址校验,配置
配置生效时间
重启生效,或手动refresh生效实时实时需要结合热加载管理, springcloudconfig需要 git webhook+rabbitmq 实时生效
配置更新推送需要手工触发支持支持
配置定时拉取支持配置更新目前依赖事件驱动, client重启或者server端推送操作
用户权限管理无,需要github支持支持现阶段可以人工处理
授权、审核、审计无,需要github支持现阶段可以人工处理
配置版本管理Git做版本管理界面上直接提供发布历史和回滚按钮操作记录有落数据库,但无查询接口
配置合规检测不支持支持(但还需完善)

实例配置监控需要结合springadmin支持支持,可以查看每个配置在哪些机器上加载
灰度发布不支持支持不支持部分更新现阶段可以人工处理
告警通知不支持支持,邮件方式告警支持,邮件方式告警
依赖关系不支持不支持不支持配置与系统版本的依赖系统运行时的依赖关系

技术路线兼容性

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

功能点优先级spring-cloud-configctrip apollodisconf备注
SpringBoot支持原生支持支持与spring boot无相关
SpringCloud支持原生支持支持与spring cloud无相关
客户端支持JavaJava、.Netjava
业务系统侵入性侵入性弱侵入性弱侵入性弱,支持注解及xml方式
依赖组件EurekaEurekazookeeper

可用性与易用性

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

功能点优先级spring-cloud-configctrip apollodisconf备注
单点故障(SPOF)支持HA部署支持HA部署支持HA部署,高可用由zookeeper保证
多数据中心部署支持支持支持
配置获取性能unkownunkown(官方说比spring快)

配置界面无,需要通过git操作统一界面(ng编写)统一界面

最终选择

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

  • 支持不同环境(开发、测试、生产)、不同集群

  • 完善的管理系统,权限管理、发布审核、操作审计

  • SpringBoot集成友好 ,较小的迁移成本

  • 配置修改实时生效(热发布)

  • 版本发布管理

部署情况

  • 管理Web:http://config.***.com/

  • 三个环境MetaServer:

    • Dev: config.devmeta.***.com

    • Test: config.testmeta.***.com

    • PRO: config.prometa.***.com

原文出处:https://www.cnblogs.com/xiaoqi/p/configserver-compair.html

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP