開源配置中心之Apollo
Introduction
Apollo(阿波羅)是攜程框架部門研發的配置管理平台,能夠集中化管理應用不同環境、不同集群的配置,配置修改後能夠實時推送到應用端,並且具備規範的權限、流程治理等特性。
服務端基於Spring Boot和Spring Cloud開發,打包後可以直接運行,不需要額外安裝Tomcat等應用容器。
Java客戶端不依賴任何框架,能夠運行於所有Java運行時環境,同時對Spring/Spring Boot環境也有額外支持。
.Net客戶端不依賴任何框架,能夠運行於所有.Net運行時環境。
更多產品介紹參見Apollo配置中心介紹
本地快速部署請參見Quick Start
Screenshots
Features
-
統一管理不同環境、不同集群的配置
- Apollo提供了一個統一界麵集中式管理不同環境(environment)、不同集群(cluster)、不同命名空間(namespace)的配置。
- 同一份代碼部署在不同的集群,可以有不同的配置,比如zk的地址等
- 通過命名空間(namespace)可以很方便的支持多個不同應用共享同一份配置,同時還允許應用對共享的配置進行覆蓋
-
配置修改實時生效(熱發布)
- 用戶在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還提供了打包腳本,一鍵就可以生成所有需要的安裝包,並且支持自定義運行時參數
Usage
Design
Development
- Apollo開發指南
- Code Styles
Deployment
FAQ
Support
Contribution
- Source Code: https://github.com/ctripcorp/apollo
- Issue Tracker: https://github.com/ctripcorp/apollo/issues
License
The project is licensed under the Apache 2 license.
最後更新:2017-04-27 22:48:36