超詳細(xì)的微服務(wù)分布式架構(gòu)統(tǒng)一配置中心選型對(duì)比
概述
由于目前新項(xiàng)目基本是微服務(wù)架構(gòu),大概有幾十個(gè)項(xiàng)目,都是基于LCP平臺(tái)研發(fā)的,而每次平臺(tái)上修改配置,各個(gè)項(xiàng)目也都需要去修改配置,然后還要重啟,況且是三套環(huán)境,維護(hù)起來(lái)特別麻煩,所以準(zhǔn)備做一個(gè)統(tǒng)一的配置中心,以下是技術(shù)選型的對(duì)比。
一、開(kāi)源配置中心
經(jīng)過(guò)一段時(shí)間的整理,大概有以下幾個(gè)開(kāi)源配置中心:
1、Apollo
Apollo(阿波羅)是攜程框架部門(mén)研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。
服務(wù)端基于Spring Boot和Spring Cloud開(kāi)發(fā),打包后可以直接運(yùn)行,不需要額外安裝Tomcat等應(yīng)用容器。
Java客戶(hù)端不依賴(lài)任何框架,能夠運(yùn)行于所有Java運(yùn)行時(shí)環(huán)境,同時(shí)對(duì)Spring/Spring Boot環(huán)境也有較好的支持。
.Net客戶(hù)端不依賴(lài)任何框架,能夠運(yùn)行于所有.Net運(yùn)行時(shí)環(huán)境。

2、Diamond(不在維護(hù),這里就不作介紹了)
Diamond是淘寶研發(fā)的分布式配置管理系統(tǒng)。使用Diamond可以讓集群中的服務(wù)進(jìn)程動(dòng)態(tài)感知數(shù)據(jù)的變化,無(wú)需重啟服務(wù)就可以實(shí)現(xiàn)配置數(shù)據(jù)的更新。
項(xiàng)目地址:https://github.com/gzllol/diamond
3、Disconf
專(zhuān)注于各種「分布式系統(tǒng)配置管理」的「通用組件」和「通用平臺(tái)」, 提供統(tǒng)一的「配置管理服務(wù)」

項(xiàng)目地址:https://github.com/knightliao/disconf
4、spring-cloud/spring-cloud-config
項(xiàng)目地址:https://github.com/spring-cloud/spring-cloud-config
spring出品,可以和spring cloud無(wú)縫配合
二、配置中心對(duì)比
1、功能特性
先從功能層面來(lái)對(duì)比


2、技術(shù)路線兼容性
引入配置中心,需要考慮和現(xiàn)有項(xiàng)目的兼容性,以及是否引入額外的第三方組件。

3、可用性與易用性
引入配置中心后,所有的應(yīng)用都需要依賴(lài)配置中心,因此可用性需要重點(diǎn)關(guān)注。

綜合對(duì)比,覺(jué)得攜程的Apollo 功能強(qiáng)大完善,github上開(kāi)源社區(qū)比較活躍,代碼一直在維護(hù),而且文檔寫(xiě)得清楚,故最終選擇Apollo 作為我們的分布式配置中心。