Apollo工作原理

在這裏插入圖片描述

Apollo工作原理

Apollo架構模塊的概覽

在這裏插入圖片描述

上圖簡要描述了Apollo的總體設計,我們可以從下往上看:

  • Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端
  • Admin Service提供配置的修改、發佈等功能,服務對象是Apollo Portal(管理界面)
  • Eureka提供服務註冊和發現,爲了簡單起見,目前Eureka在部署時和Config Service是在一個JVM進程中的
  • Config Service和Admin Service都是多實例、無狀態部署,所以需要將自己註冊到Eureka中並保持心跳
    在Eureka之上架了一層Meta Server用於封裝Eureka的服務發現接口
  • Client通過域名訪問Meta Server獲取Config Service服務列表(IP+Port),而後直接通過IP+Port訪問服務,
    同時在Client側會做load balance、錯誤重試
  • Portal通過域名訪問Meta Server獲取Admin Service服務列表(IP+Port),而後直接通過IP+Port訪問服務,
    同時在Portal側會做load balance、錯誤重試爲了簡化部署,我們實際上會把Config Service、Eureka和Meta Server三個邏輯角色部署在同一個JVM進程中

分步執行流程

  1. Apollo啓動後,Config/Admin Service會自動註冊到Eureka服務註冊中心,並定期發送保活心跳。
  2. Apollo Client和Portal管理端通過配置的Meta Server的域名地址經由Software Load Balancer(軟件負載均衡
    器)進行負載均衡後分配到某一個Meta Server
  3. Meta Server從Eureka獲取Config Service和Admin Service的服務信息,相當於是一個Eureka Client
  4. Meta Server獲取Config Service和Admin Service(IP+Port)失敗後會進行重試
  5. 獲取到正確的Config Service和Admin Service的服務信息後,Apollo Client通過Config Service爲應用提供配
    置獲取、實時更新等功能;Apollo Portal管理端通過Admin Service提供配置新增、修改、發佈等功能

核心概念

  1. application (應用)
    這個很好理解,就是實際使用配置的應用,Apollo客戶端在運行時需要知道當前應用是誰,從而可以去獲取
    對應的配置
    關鍵字:appId
  2. environment (環境)
    配置對應的環境,Apollo客戶端在運行時需要知道當前應用處於哪個環境,從而可以去獲取應用的配置
    關鍵字:env
  3. cluster (集羣)
    一個應用下不同實例的分組,比如典型的可以按照數據中心分,把上海機房的應用實例分爲一個集羣,把北
    京機房的應用實例分爲另一個集羣。
    關鍵字:cluster
  4. namespace (命名空間)
    一個應用下不同配置的分組,可以簡單地把namespace類比爲文件,不同類型的配置存放在不同的文件中,
    如數據庫配置文件,RPC配置文件,應用自身的配置文件等
    關鍵字:namespaces

它們的關係如下圖所示:
在這裏插入圖片描述

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