Apollo阿波羅配置中心

Apollo配置中心

1.什麼是配置中心

  • 首先講講什麼是配置

    一般來說,一個系統從發佈到最終呈現給用戶的步驟是先從配置文件中讀取配置,諸如數據庫連接池配置、線程池配置、還有與其他系統交互時需要的相關參數等等。因爲我們的程序不可能做到太死板,總要留一些可以隨程序運行而動態改變的參數,也可以理解爲通過這些配置,我們可以在程序裏動態的控制程序 運行時的狀態。比如在配置a下的行爲,在配置b下的行爲。用一個比較專業點的詞來說,也就是**“系統運行時(runtime)飛行姿態的動態調整”**

    舉個例子,如我們在程序中配置key-value類型的開關,我們就可以通過開關來控制程序是否要執行指定的業務邏輯。典型的例子是日誌級別,我們開發和生產環境中的日誌級別可能不一樣,開發中我們需要看到更多的日誌信息,因此可以設置logLevel=info,但在生產中可能就是debug或者warn級別的了。

    早期都是通過配置文件來讀取配置的,需要的配置都在文件中直接添加諸如config-key=config-value這種方式對於集中式開發來說還是比較方便的,如果需要修改配置,只需編輯配置文件後重啓服務即可。然而隨着目前分佈式、微服務架構的崛起。配置文件似乎已經不那麼實用了,一次上線可能涉及到多臺機器的打包、重啓,大型系統甚至有上千萬的機器,其中的耗時可想而知,遠不是單機時代發佈一下就能解決的。如何保證在分佈式集羣中不停機,保持系統運行時的飛行姿態,這就是配置中心要解決的問題了。

2.配置舉例

  1. 配置伴隨應用的整個生命週期,啓動時讀取配置進行初始化,運行時根據配置調整行爲
  2. 配置可以有多種加載方式(程序內部hard code,配置文件,環境變量,啓動參數,基於數據庫)
  3. 配置需要治理
    • 權限控制
    • 集羣配置管理
    • 框架類組件配置管理

我們常見的配置變更諸如:

  • 線程池大小配置
  • 數據庫連接池
  • 開關、限流配置
  • 路由規則

再舉幾個例子:

在開發環境中將logLevel設置爲DEBUG,在預發環境logLevel設置爲INFO,生產環境裏logLevel設置爲WARNING
在日常環境執行線程池的最大線程數應該設置爲15,而生產環境上這個值應該大一點,默認設爲150
在線上環境中,中心機房,應用數據源需要連接A庫,而S機房,應用應該就近連接使用B庫
只有在T環境,雙向同步開關才應該關閉
這次的改動有點大,新的特性僅在線上的H單元把該特性開放出來,其它的單元環境先不要開放出來

3.說說Apollo

我也是近期才瞭解apollo的,只是自己做做筆記,記錄一下

3.1背景

程序配置,功能開關、參數配置、服務器地址。如修改後實時生效、分環境、分集羣管理配置,完善的權限、審覈機制

3.2 介紹

攜程研發的開源配置管理中心,集中化管理應用不同環境、不同集羣的配置,配置修改後實時推送到應用端,具備規範的權限、流程治理等特性
四個維度管理Key-value格式的配置

  • Application

  • Environment

  • Cluster

  • Namespace

亮點:統一管理、修改配置實時生效、版本發佈管理(支持回滾)、灰度發佈、權限管理、發佈審覈、客戶端配置信息監控
自身優勢:提供java和.net原生客戶端、提供開放平臺API、部署簡單(可用性高、對外部依賴少、只有mysql、提供打包腳本、一鍵生成安裝包、支持自定義運行時參數)

先寫這麼多…未完待續。。

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