介紹
隨著程序功能的日益復雜,程序的配置日益增多,對程序配置的期望值也越來越高:配置修改后實時生效,灰度發布,分環境、分集群管理配置,完善的權限、審核機制,Apollo(阿波羅)是一款可靠的分布式配置管理中心,誕生于攜程框架研發部,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性,適用于微服務配置管理場景。
配置維度及說明
支持4個維度管理Key-Value格式的配置:
application (應用)
environment (環境)
cluster (集群)
namespace (命名空間)
Namespace是配置項的集合,類似于一個配置文件的概念。它的獲取權限分為兩種:private和public。類型有三種:私有類型、公共類型、關聯類型(繼承類型)。
private權限的Namespace,只能被所屬的應用獲取到。一個應用嘗試獲取其它應用private的Namespace,Apollo會報“404”異常。私有類型的Namespace具有private權限。
public權限的Namespace,能被任何應用獲取。公共類型的Namespace具有public權限。公共類型的Namespace相當于游離于應用之外的配置,且通過Namespace的名稱去標識公共Namespace,所以公共的Namespace的名稱必須全局唯一。
關聯類型又可稱為繼承類型,關聯類型具有private權限。關聯類型的Namespace繼承于公共類型的Namespace,用于覆蓋公共Namespace的某些配置。
發布功能與回滾機制
Apollo支持熱發布,也即不需要重啟進程實現配置更改,可以在配置更改后,由客戶端實時接收。Apollo支持灰度發布,可配置僅對部分實例生效,測試無誤后推送到所有實例中去。Apollo的回滾機制是將發布到客戶端的配置回滾到上一個已發布版本,也就是說客戶端讀取到的配置會恢復到上一個版本,但頁面上編輯狀態的配置是不會回滾的,從而開發可以在修復配置后重新發布。
可視化的WEB頁面和開放平臺API
Apollo自身提供了比較完善的配置管理界面,支持多種環境的配置管理、權限、流程治理等。也可以方便的看到配置在被哪些實例所使用。應用和配置的管理都有完善的權限管理機制,還具有發布審核、操作審計的功能,可以方便查看日志并追蹤問題。除了提供Java和.Net的原生客戶端外也提供了Http接口方便其他應用使用。