類似Lion
一、Apollo客戶端實現(xiàn)原理
1、客戶端和服務端會保持一個長連接,從而第一時間獲取配置更新的推送。
2、客戶端還會定時從Apollo配置中心服務端拉取應用的最新配置,而且客戶端定時拉取會上報給本地版本,默認每隔5分鐘拉取一次,也可以通過運行時指定apollo.refreshInterval來覆蓋,單位為分鐘。
3、客戶端從Apollo配置中心服務端獲取到應用的最新配置后,會保存在內(nèi)存。
4、客戶端會把從服務端拉取到的配置在本地文件系統(tǒng)緩存一份,保證在遇到服務不可用或網(wǎng)路故障時,依賴能從本地恢復配置,也實現(xiàn)了一定的高可用性。應用程序從客戶端獲取到罪行的配置、訂閱配置更新通知。
二、配置更新實現(xiàn)
前面提到了Apollo客戶端和服務端保持了一個長連接,從而能第一時間獲得配置更新的推送。
長連接實際上我們是通過Http Long Polling實現(xiàn)的,具體而言:
客戶端發(fā)起一個Http請求到服務端
服務端會保持住這個連接30秒
如果在30秒內(nèi)有客戶端關心的配置變化,被保持住的客戶端請求會立即返回,并告知客戶端有配置變化的namespace信息,客戶端會據(jù)此拉取對應namespace的最新配置
如果在30秒內(nèi)沒有客戶端關心的配置變化,那么會返回Http狀態(tài)碼304給客戶端
客戶端在服務端請求返回后會自動重連
考慮到會有數(shù)萬客戶端向服務端發(fā)起長連,在服務端我們使用了async servlet(Spring DeferredResult)來服務HttpLong Polling請求。
三、架構
整體架構:
四大板塊 :
-
ConfigService
提供配置獲取接口
提供配置推送接口
服務于Apollo客戶端 -
AdminService
提供配置管理接口
提供配置修改發(fā)布接口
服務于管理界面Portal -
Client
為應用獲取配置,支持實時更新
通過MetaServer獲取ConfigService的服務列表
使用客戶端軟負載SLB方式調(diào)用ConfigService -
Portal
配置管理界面
通過MetaServer獲取AdminService的服務列表
使用客戶端軟負載SLB方式調(diào)用AdminService
三個輔助服務發(fā)現(xiàn)模塊
-
Eureka
用于服務發(fā)現(xiàn)和注冊
Config/AdminService注冊實例并定期報心跳
和ConfigService住在一起部署 -
MetaServer
Portal通過域名訪問MetaServer獲取AdminService的地址列表
Client通過域名訪問MetaServer獲取ConfigService的地址列表
相當于一個Eureka Proxy
邏輯角色,和ConfigService住在一起部署 -
NginxLB
和域名系統(tǒng)配合,協(xié)助Portal訪問MetaServer獲取AdminService地址列表
和域名系統(tǒng)配合,協(xié)助Client訪問MetaServer獲取ConfigService地址列表
和域名系統(tǒng)配合,協(xié)助用戶訪問Portal進行配置管理
Why Eureka
為什么我們采用Eureka作為服務注冊中心,而不是使用傳統(tǒng)的zk、etcd呢?我大致總結了一下,有以下幾方面的原因:
它提供了完整的Service Registry和Service Discovery實現(xiàn)
首先是提供了完整的實現(xiàn),并且也經(jīng)受住了Netflix自己的生產(chǎn)環(huán)境考驗,相對使用起來會比較省心。
和Spring Cloud無縫集成
1)我們的項目本身就使用了Spring Cloud和Spring Boot,同時Spring Cloud還有一套非常完善的開源代碼來整合Eureka,所以使用起來非常方便。
2)另外,Eureka還支持在我們應用自身的容器中啟動,也就是說我們的應用啟動完之后,既充當了Eureka的角色,同時也是服務的提供者。這樣就極大的提高了服務的可用性。
3)這一點是我們選擇Eureka而不是zk、etcd等的主要原因,為了提高配置中心的可用性和降低部署復雜度,我們需要盡可能地減少外部依賴。文章來源:http://www.zghlxwxcb.cn/news/detail-694053.html
Open Source
最后一點是開源,由于代碼是開源的,所以非常便于我們了解它的實現(xiàn)原理和排查問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-694053.html
到了這里,關于分布式配置中心 Apollo的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!