1. 程式人生 > >統一配置中心選型對比

統一配置中心選型對比

整理筆記時發現之前整理的一些東西,分享給大家。

為什麼需要集中配置

程式的發展,需要引入集中配置

  • 隨著程式功能的日益複雜,程式的配置日益增多:各種功能的開關、引數的配置、伺服器的地址……
  • 並且對配置的期望也越來越高,配置修改後實時生效,灰度釋出,分環境、分叢集管理配置,完善的許可權、稽核機制……
  • 並且隨著採用分散式的開發模式,專案之間的相互引用隨著服務的不斷增多,相互之間的呼叫複雜度成指數升高,每次投產或者上線新的專案時苦不堪言,因此需要引用配置中心治理。

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