apollo-整體介紹以及核心概念

簡介

Apollo(阿波羅)是攜程框架部門研發的開源配置管理中心,能夠集中化管理應用不同環境、不同集羣的配置,配置修改後能夠實時推送到應用端,並且具備規範的權限、流程治理等特性。

功能介紹

  1. 統一管理不同環境、不同集羣的配置
    • Apollo提供了一個統一界面集中式管理不同環境(environment)、不同集羣(cluster)、不同命名空間(namespace)的配置。
    • 同一份代碼部署在不同的集羣,可以有不同的配置,比如zookeeper的地址等
    • 通過命名空間(namespace)可以很方便地支持多個不同應用共享同一份配置,同時還允許應用對共享的配置進行覆蓋
  2. 配置修改實時生效
    • 用戶在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序
  3. 版本發佈管理
      • 所有的配置發佈都有版本概念,從而可以方便地支持配置的回滾
  4. 灰度發佈
    • 支持配置的灰度發佈,比如點了發佈後,只對部分應用實例生效,等觀察一段時間沒問題後再推給所有應用實例
  5. 權限管理、發佈審覈、操作審計
    • 應用和配置的管理都有完善的權限管理機制,對配置的管理還分爲了編輯和發佈兩個環節,從而減少人爲的錯誤。
    • 所有的操作都有審計日誌,可以方便地追蹤問題
  6. 客戶端配置信息監控
      • 可以在界面上方便地看到配置在被哪些實例使用
  7. 提供Java和.Net原生客戶端
    • 提供了Java和.Net的原生客戶端,方便應用集成
    • 支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便應用使用(需要Spring 3.1.1+)
    • 同時提供了Http接口,非Java和.Net應用也可以方便地使用
  8. 部署簡單

    • 配置中心作爲基礎服務,可用性要求非常高,這就要求Apollo對外部依賴儘可能地少
    • 目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來
    • Apollo還提供了打包腳本,一鍵就可以生成所有需要的安裝包,並且支持自定義運行時參數
  9. 提供開放平臺API

    • Apollo出於通用性考慮,不會對配置的修改做過多限制,只要符合基本的格式就能保存,不會針對不同的配置值進行針對性的校驗,如數據庫用戶名、密碼,Redis服務地址等
    • 對於這類應用配置,Apollo支持應用方通過開放平臺API在Apollo進行配置的修改和發佈,並且具備完善的授權和權限控制

    核心概念介紹

    application-應用名稱

    • 就是實際使用配置的應用,Apollo客戶端在運行時需要知道當前應用是誰,從而可以去獲取對應的配置
    • 每個應用都需要有唯一的身份標識 -- appId

    envorinment-各種環境

    • 配置對應的環境,Apollo客戶端在運行時需要知道當前應用處於哪個環境,從而可以去獲取應用的配置
    • 我們認爲環境和代碼無關,同一份代碼部署在不同的環境就應該能夠獲取到不同環境的配置
    • 所以環境默認是通過讀取機器上的配置(server.properties中的env屬性)指定的,不過爲了開發方便,也支持運行時通過System Property

    cluster-部署集羣

    • 一個應用下不同實例的分組,比如典型的可以按照數據中心分,把上海機房的應用實例分爲一個集羣,把北京機房的應用實例分爲另一個集羣。
    • 對不同的cluster,同一個配置可以有不一樣的值,如zookeeper地址。
    • 集羣默認是通過讀取機器上的配置(server.properties中的idc屬性)指定的,不過也支持運行時通過System Property指定

    namespace-命令空間

    • 一個應用下不同配置的分組,可以簡單地把namespace類比爲文件,不同類型的配置存放在不同的文件中,如數據庫配置文件,RPC配置文件,應用自身的配置文件等
    • 應用可以直接讀取到公共組件的配置namespace,如DAL,RPC等
    • 應用也可以通過繼承公共組件的配置namespace來對公共組件的配置做調整,如DAL的初始數據庫連接數

     

    環境介紹
    dev:線下環境
    fat:開發環境
    uat:測試環境
    prod:生產環境

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章