超詳細的微服務分布式架構統一配置中心選型對比
概述
由于目前新項目基本是微服務架構,大概有幾十個項目,都是基于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 作為我們的分布式配置中心。