Apollo配置中心-配置熱發布如何實現
引言
配置中心在微服務架構體系中是非常重要的基礎設施服務,承擔著分布式配置集中管理、配置熱發布以及審計等重要的職責。本文主要探討??Apollo??配置中心的配置熱發布特性如何實現。
配置熱發布如何實現

1、配置發布主流程
如上圖所示,配置發布的主流程如下:

(1)用戶通過??Portal??向??AdminService??發布配置信息;
(2)??AdminService??在配置發布后會往??ReleaseMessage??表插入一條消息記錄;
(3)??ConfigService??中包含了一個定時線程,該定時線程每秒掃描一次??ReleaseMessage??表,檢查表中是否有新的消息記錄;
(4)如果存在配置更新,??ConfigService??就會通知所有的消息監聽器;
(5)通知??Controller??會根據發布的配置信息通知對應的客戶端;
客戶端與配置中心的大致交互如下所示:
這里的配置更新推送其實并不是真正進行信息推送,而是通過長輪詢來實現配置的更新。實際上并不是配置的更新推送,而是配置更新通知的推送,客戶端拿到通知后需要進一步獲取具體的變化的配置信息。
2、長輪詢
(1)如果使用??Push??方式推送數據會有什么問題?

服務端需要與客戶端建立長連接,服務端有數據更新的時候可以進行數據推送,數據更新比較及時。但是服務端無法感知客戶端的處理能力,可能會造成數據積壓。另外集群情況下部分節點不在線會通知失敗,等客戶端又在線后需要進行補償推送,節點還有可能存在擴容等各種情況。對于配置中心這種業務場景來說,通過??Push??方式實現數據推動顯得復雜了。
(2)如果使用??Pull??方式拉取數據會有什么問題?

??Pull??模式主要是通過客戶端主動向配置中心進行數據請求,拉取對應的配置信息。由于是客戶端主動拉取,因此不會出現數據堆積的問題。但是數據如何去拉,什么時間去拉,拉的頻率如何控制,這些都是問題。如果頻率過高,而配置并未更新,那么就會對服務端造成不必要的連接壓力。如果頻率過低,那么配置更新就會存在延時的問題。因此同樣不適合配置中心的業務場景。
(3)長輪詢
客戶端向配置中心進行請求,配置中心不會立即返回響應,而是會??hold??住這個請求直到指定時間超時后進行返回。如果沒有配置變更,則返回??Http??狀態碼??304??給客戶端。超時返回后,客戶端將再次發起請求。
如果存在配置變更,將返回對應的??namespace??信息,客戶端根據namespace信息獲取對應的配置信息。
另外為了保證配置的有效性,客戶端也會定時請求配置信息,防止配置更新可能出現的異常情況,是一種數據保證的兜底??fallback??機制。另外當獲取到配置后,會同步到本地配置文件中 。這樣即便客戶端與配置中心無法通信,客戶端也可以從本地配置文件中獲取配置信息。
那么問題來了,為什么不直接在長輪詢的響應中直接回復配置信息呢?主要是由于本身已經存在了定時拉取配置的步驟,那么為了保證單一原則以及代碼上的簡潔以及復用。所以通過這種獲取配置更新后再進行數據拉取的方式。
3、客戶端獲取配置信息
我們一起看下客戶端如何工作流程,如下圖:

(1)??ConfigServiceLocator??:主要負責向??Eruka??注冊中心獲取??ConfigService??地址列表信息;
(2)??RemoteConfigLongPollService??:從??ConfigServiceLocator??獲取到地址列表信息后,通過長輪詢的方式獲取配置變更信息;
(3)??RemoteConfigReposity??:從??ConfigService??獲取變更的配置數據;
(4)??LocalFileConfigReposity??:把配置數據固化到本地,同時作為本地配置數據的來源;
(5)??DefaultConfig??:主要和業務方進行交互,提供配置獲取方法,同時可以注冊配置變更事件。
總結
本文主要探討了??Apollo??配置中心配置熱發布的相關內容,分析了為什么長輪詢是比較適合配置中心的數據交互方式。在今后的架構設計中我們也可以以此來作為參考。另外客戶端的設計中,也體現了了分層以及職責單一的代碼風格,我們自己在實際項目開發中也比較有借鑒的意義

————————————————————————————————————————————————
?著作權歸作者所有:來自51CTO博客作者慕楓技術筆記的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
Apollo配置中心如何實現配置熱發布
https://blog.51cto.com/u_15474618/4905554
————————————————————————————————————————————————
可參考:
微服務架構~攜程Apollo配置中心架構剖析
官方文檔
本文來自博客園,作者:wfxx,轉載請注明原文鏈接:http://www.rzrgm.cn/wufaxiang/p/18365652

浙公網安備 33010602011771號