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

为什么需要集中配置

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

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

已有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

分类: 架构与选型

标签: 配置中心

转载:

https://www.cnblogs.com/xiaoqi/p/configserver-compair.html

统一配置中心选型对比相关推荐

  1. springcloud-spring cloud config统一配置中心

    统一配置中心 为什么需要统一配置中心? 统一配置中心顾名思义,就是将配置统一管理,配置统一管理的好处是在日后大规模集群部署服务应用时相同的服务配置一致,日后再修改配置只需要统一修改全部同步,不需要一个 ...

  2. spring cloud互联网分布式微服务云平台规划分析--服务统一配置中心

    1.介绍 鸿鹄云架构[服务统一配置中心]为分布式系统中的外部配置提供服务器和客户端支持.使用commonservice-config,可以在所有环境中管理应用程序的外部属性.应用程序可通过从开发人员到 ...

  3. 统一配置中心的设计方案

    转载自 统一配置中心的设计方案 对于配置文件,我们不陌生,它提供我们可以动态修改程序运行能力.引用别人的一句话就是:系统运行时(runtime)飞行姿态的动态调整. 我可以把我们的工作称之为在快速飞行 ...

  4. SpringCloud 从菜鸟到大牛之五 统一配置中心 Spring Cloud Config

    延续上一篇文章 应用通信–Feign Ribbon https://blog.csdn.net/dgutliangxuan/article/details/80967936 来看一看,架构图 为什么要 ...

  5. SpringCloud实战五:统一配置中心

    Hello大家好,我是初晨,本章我们学习SpringCloud 的统一配置中心的使用.大家有问题和意见可以发邮箱mr_beany@163.com 一:为什么需要统一配置中心 简单来说就是将项目中的配置 ...

  6. 第十二章 Spring Cloud Config 统一配置中心详解

    目录 一.配置问题分析及解决方案 1.问题分析 2.解决方案 二.Spring Cloud Config 介绍 1.Spring Cloud Config特性 2.Spring Cloud Confi ...

  7. 统一配置中心对比介绍

    一.Apollo和Spring Cloud Config配置中心对比 二.apollo相比于spring-cloud-config有什么优势 https://github.com/ctripcorp/ ...

  8. Spring-Cloud中的统一配置中心

    服务拆分以后,服务的数量非常多,如果所有的配置都以配置文件的方式放在应用本地的话,非常难以管理,可以想象当有几百上千个进程中有一个配置出现了问题,是很难将它找出来的,因而需要有统一的配置中心,来管理所 ...

  9. 『Consul』.NET Core快速接入Consul实现统一配置中心

最新文章

  1. SURF与SIFT比较分析
  2. System.Web.Caching.Cache类 缓存 各种缓存依赖
  3. 用逻辑回归模型解决互联网金融信用风险问题
  4. unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
  5. mysql5.1.7升级到5.6_1 MySQL5.6 升级到 5.7 版本
  6. 服务器常用陈列raid0,raid1,raid5,raid10(0+1)详解及区别
  7. [转载] python自带sqlite库_Python内置库SQlite3使用指南
  8. 信号与线性系统分析 吴大正 (与电子 通信专业的同学共勉)
  9. 50道逻辑编程小题目
  10. 生信分析电脑推荐_生信工程师的个人计算机配置推荐
  11. python mpi_MPI Python环境搭建
  12. 世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
  13. IText_根据模板导出PDF(文字、表格、图片)
  14. 《响应式Web设计实践》一2.1 布局选项
  15. unity 相同材质不同属性怎么合批
  16. 智慧矿山无人驾驶模块
  17. OPC UA协议网关
  18. c语言程序三角形实验报告,C语言程序设计实验报告(6)
  19. MySQL 实现不同分组取不同值
  20. 下载并安装Windows 7 系统的步骤

热门文章

  1. sumdiv 算术基本定理的推论
  2. 使用particles.js实现网页背景粒子特效
  3. xadmin入门使用
  4. Django基础—— 19.Form
  5. 刷题总结——湫湫系列故事——设计风景线(hdu4514 并差集判环+树的直径)
  6. 深入浅出mybatis之入门使用
  7. iframe页面改动parent页面的隐藏input部件value值,不能触发change事件。
  8. 15. 迭代器模式(Iterator Pattern)
  9. 阿里中间件——消息中间件Notify和MetaQ
  10. druid数据库连接池整合到SpringMvc