新一代開源配置中心-Apollo

lepdou發表於2017-04-27

小貼士

大家好,我是Apollo的主要作者之一 張樂,目前就職於 螞蟻中介軟體團隊,我們團隊現在大力發展開源、金融雲等業務。急需對技術熱愛的小夥伴加入,無限HC~
有興趣的小夥伴可以聯絡我哦~

github 主頁:https://github.com/lepdou
郵箱地址:lepdou@126.com

Alipay Github Home Page

Introduction

Apollo(Github主頁)是攜程框架部門研發的配置管理平臺,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性。

服務端基於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

  1. 應用接入指南
  2. Java客戶端使用指南
  3. .Net客戶端使用指南
  4. 其它語言客戶端接入指南
  5. Apollo開放平臺接入指南

Design

Development

Deployment

FAQ

Support

tech-support-qq

Contribution

License

The project is licensed under the Apache 2 license.


相關文章