概述
由于目前新项目基本是微服务架构,大概有几十个项目,都是基于LCP平台研发的,而每次平台上修改配置,各个项目也都需要去修改配置,然后还要重启,况且是三套环境,维护起来特别麻烦,所以准备做一个统一的配置中心,以下是技术选型的对比。
一、开源配置中心
经过一段时间的整理,大概有以下几个开源配置中心:
1、Apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。
2、Diamond(不在维护,这里就不作介绍了)
Diamond是淘宝研发的分布式配置管理系统。使用Diamond可以让集群中的服务进程动态感知数据的变化,无需重启服务就可以实现配置数据的更新。
项目地址:https://github.com/gzllol/diamond
3、Disconf
专注于各种「分布式系统配置管理」的「通用组件」和「通用平台」, 提供统一的「配置管理服务」
项目地址:https://github.com/knightliao/disconf
4、spring-cloud/spring-cloud-config
项目地址:https://github.com/spring-cloud/spring-cloud-config
spring出品,可以和spring cloud无缝配合
二、配置中心对比
1、功能特性
先从功能层面来对比
2、技术路线兼容性
引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。
3、可用性与易用性
引入配置中心后,所有的应用都需要依赖配置中心,因此可用性需要重点关注。
综合对比,觉得携程的Apollo 功能强大完善,github上开源社区比较活跃,代码一直在维护,而且文档写得清楚,故最终选择Apollo 作为我们的分布式配置中心。