1. 程式人生 > >Apollo和分散式配置

Apollo和分散式配置

傳統配置檔案有什麼缺點

如果修改了配置檔案,需要重新打包釋出,而且每個環境變數配置檔案複雜。

分散式配置中心

將配置檔案註冊到配置中心平臺上,可以使用分散式配置中心實時更新配置檔案,統一管理,不需要重新打包釋出

 

 後面定義的所有相關配置檔案資訊:除了 server port  其他的不寫在本地哦

 

什麼是分散式配置中心

專案中配置檔案比較繁雜,而且不同環境的不同配置修改相對頻繁,每次釋出都需要對應修改配置,如果配置出現錯誤,需要重新打包釋出,時間成本較高,因此需要做統一的分散式註冊中心,能做到自動更新配置檔案資訊,解決以上問題

 

常用分散式配置中心框架

Disconf(依賴於zookpeer)、Zookpeer()、diamond、攜程(阿波羅)、Redis、xxl-conf

 

Zookpeer保證配置檔案資訊實時更新 (事件通知)

 

大型網際網路公司自己內部都有自己獨立分散式配置中心

獨立RPC、獨立分散式各種解決方案

註冊中心解決 rpc服務治理

分散式配置中心 解決分散式配置檔案管理

Apollo阿波羅簡介

 

Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。

Apollo阿波羅特點

使用者在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程式。

統一管理不同環境、不同叢集的配置

 

所有的配置釋出都有版本概念,從而可以方便的支援配置的回滾。

配置修改實時生效(熱釋出)

使用者在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程式

版本釋出管理

所有的配置釋出都有版本概念,從而可以方便的支援配置的回滾

灰度釋出

支援配置的灰度釋出,比如點了釋出後,只對部分應用例項生效,等觀察一段時間沒問題後再推給所有應用例項。

許可權管理、釋出稽核、操作審計

應用和配置的管理都有完善的許可權管理機制,對配置的管理還分為了編輯和釋出兩個環節,從而減少人為的錯誤。

所有的操作都有審計日誌,可以方便的追蹤問題。

客戶端配置資訊監控

可以方便的看到配置在被哪些例項使用

提供Java和.Net原生客戶端

提供了Java和.Net的原生客戶端,方便應用整合

支援Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便應用使用(需要Spring 3.1.1+)

同時提供了Http介面,非Java和.Net應用也可以方便的使用

提供開放平臺API

Apollo自身提供了比較完善的統一配置管理介面,支援多環境、多資料中心配置管理、許可權、流程治理等特性。

不過Apollo出於通用性考慮,對配置的修改不會做過多限制,只要符合基本的格式就能夠儲存。

在我們的調研中發現,對於有些使用方,它們的配置可能會有比較複雜的格式,如xml, json,需要對格式做校驗。

還有一些使用方如DAL,不僅有特定的格式,而且對輸入的值也需要進行校驗後方可儲存,如檢查資料庫、使用者名稱和密碼是否匹配。

對於這類應用,Apollo支援應用方通過開放介面在Apollo進行配置的修改和釋出,並且具備完善的授權和許可權控制

部署簡單

配置中心作為基礎服務,可用性要求非常高,這就要求Apollo對外部依賴儘可能地少

目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來

Apollo還提供了打包指令碼,一鍵就可以生成所有需要的安裝包,並且支援自定義執行時引數