系統服務化構建-客戶端與服務器端數據一致性探討

Apollo(阿波羅)是攜程框架部門研發的分佈式配置中心,可以集中化管理應用不一樣環境、不一樣集羣的配置,配置修改後可以實時推送到應用端,而且具有規範的權限、流程治理等特性,適用於微服務配置管理場景。git

本文從Apollo框架的客戶端實現原理展開討論。github

客戶端實現原理.png

原文連接
Apollo 配置中心:分佈式部署緩存

上圖簡要描述了 Apollo 客戶端的實現原理:服務器

1.客戶端和服務端保持了一個長鏈接,從而能第一時間得到配置更新的推送
2.客戶端會定時從 Apollo 配置中心服務端拉取應用的最新配置(防止推送機制失效致使配置不更新)
3.客戶端從 Apollo 配置中心服務端獲取到應用的最新配置後,會保存在內存中
客戶端會把從服務端獲取到的配置在本地文件系統緩存一份,在遇到服務不可用,或網絡不通的時候,依然能從本地恢復配置
4.應用程序從 Apollo 客戶端獲取最新的配置、訂閱配置更新通知。網絡

推拉結合及本地文件輔助

從戶端實現原理能夠看出,配置中心即控制中心,做爲配置中心客戶端和服務器端一致性是強需求。爲了實現這個目的,採用了推拉結合及本地文件輔助的方式。框架

這裏邊涉及的關鍵詞有 服務器,客戶端,通知,長鏈接,同步,廣播。分佈式

以前在項目中屢次遇到到這種客戶端須要接收到實時推送的需求,需求的本質就是要把服務器端數據及時更新到客戶端,是一個數據發現和同步的過程。微服務

本文中把這種需求定義爲推送服務需求,從實現的便利性來講,都是採用第三方推送服務,其實是推服務,而後把推送成功率所有壓在這個服務的成功率上,衆所周知的緣由,客戶端推送到達率存在必定的變數,關聯因素比較多。最終這個需求的業務方滿意度會大打折扣。spa

從客戶端實現原理圖中能夠獲得一些啓示,若是想提升這個推送功能的可用性,須要從鏈接方式入手,採用推拉結合的方式。推方式依賴第三方服務,拉服務藉助客戶端自助定時結合策略,原理相似於消息補償。blog

參考連接

Apollo 配置中心:分佈式部署

阿波羅分佈式配置中心


文章已同步到公衆號《圖南日晟》歡迎關注
圖南日晟.png

相關文章
相關標籤/搜索