Apollo系列之架构设计(一)
原創(chuàng)文章,轉(zhuǎn)載請標(biāo)注。https:https://www.cnblogs.com/boycelee/p/17967590
目錄- 一、什么是配置中心?
- 二、傳統(tǒng)配置有什么問題?
- 三、配置中心的場景
-
四、架構(gòu)設(shè)計
- (1)基礎(chǔ)模型
- (2)詳細(xì)架構(gòu)
-
六、模塊介紹
-
客戶端層
- Client
- Portal
-
網(wǎng)絡(luò)層
- NginxLB
- Meta Server
- Eureka
-
服務(wù)端層
- Config Service
- Admin Service
-
客戶端層
-
七、思考
- 1、為什么NginxLB與Eureka一起使用?不使用Eureka是否可行?
- 2、Confg Service 、Admin Service以及Portal為什么作為獨立應(yīng)用單獨部署?
- 最后
一、什么是配置中心?
配置中心是集中管理和動態(tài)更新應(yīng)用配置信息的服務(wù),服務(wù)能夠在不停機的情況下新增或修改配置信息,具有以下關(guān)鍵特點:
(1)集中管理。配置中心集中存儲服務(wù)所需要的各類配置信息;
(2)動態(tài)變更。應(yīng)用服務(wù)不需要重啟就可以從配置中心動態(tài)獲取到最新數(shù)據(jù);
(3)通知機制。當(dāng)服務(wù)配置發(fā)生變化時,配置中心可以提供通知機制,通知應(yīng)用程序關(guān)心的配置發(fā)生變化。
能夠提高系統(tǒng)的可維護(hù)性、靈活性和實時性。
二、傳統(tǒng)配置有什么問題?
傳統(tǒng)配置會使用本地靜態(tài)文件作為存儲介質(zhì)。就存在這幾個問題:
(1)動態(tài)修改。本地靜態(tài)文件修改時必須重啟應(yīng)用,無法做到動態(tài)修改;
(2)統(tǒng)一管理。存儲格式、存儲地點都雜亂無章,無法對配置進(jìn)行統(tǒng)一規(guī)范和約束;
(3)即時生效。配置完成后,需要多機器部署完成,修改配置才能夠生效。無法做到及時通知、及時生效。
三、配置中心的場景
大體場景有如下這幾種:
(1)系統(tǒng)相關(guān)。如線程池配置信息、緩存大小、連接池大小、熔斷/限流閾值等;
(2)業(yè)務(wù)相關(guān)。如活動文案、推廣活動、積分規(guī)則、價格策略等;
(3)開關(guān)相關(guān)。A/B Test、特性開關(guān)、推送開關(guān)等;
(4)安全相關(guān)。數(shù)據(jù)庫連接信息、加密秘鑰、賬號密碼等。
四、架構(gòu)設(shè)計
(1)基礎(chǔ)模型
(2)詳細(xì)架構(gòu)
架構(gòu)圖分為三層,分別是客戶端層、網(wǎng)絡(luò)層以及服務(wù)層。其中客戶端層包括client模塊、portal模塊,網(wǎng)絡(luò)層包括Load Balancer(Nginx)和Mata Server以及Eureka,服務(wù)層包括Config Service模塊和Admin Service模塊。
六、模塊介紹
客戶端層
Client
- 客戶端負(fù)責(zé)從Config Service獲取應(yīng)用的配置信息;
- 監(jiān)聽配置變化。當(dāng)配置發(fā)生更新時,Config Service會通知Client,并出發(fā)其進(jìn)行配置刷新;
- 通過ip + port的方式遠(yuǎn)程調(diào)用Config Service,以獲取配置數(shù)據(jù)。
Portal
- 管理平臺,提供配置中心的管理功能,包括應(yīng)用創(chuàng)建、查看、修改、發(fā)布以及回滾等功能
網(wǎng)絡(luò)層
NginxLB
- Client、Portal通過域名的方式訪問MetaServer,Nginx作為負(fù)載均衡器;
- Nginx將請求分發(fā)到每個Meta Server服務(wù)實例,結(jié)合Eureka可以動態(tài)地獲取到注冊中心注冊的服務(wù)實例(Config Service、Admin Service)列表。
Meta Server
- Meta Server封裝Eureka Client,通過Eureka Client獲取Config Service和Admin Service的服務(wù)信息,Client與Portal不需要關(guān)心注冊中心的服務(wù)發(fā)現(xiàn)問題;
- Client和Portal通過ip+port的方式訪問Client Service 與 Admin Service
- Meta Server是邏輯概念與Config Service模塊一起部署在同一實例中;
- Meta Service還提供其他注冊中心的封裝類,其中包括Consul、Nacos、Kubernetes等;
Eureka
- Eureka是用于服務(wù)注冊與服務(wù)發(fā)現(xiàn)的注冊中心,Config Sevice與Admin Service會定期向注冊中心上報心跳;
- Eureka與Config Service部署在一起,簡化部署和管理。
- 相對于Zookeeper其部署方式更便捷。
服務(wù)端層
Config Service
- 服務(wù)于Client模塊;
- 提供獲取配置的接口;
- 基于長輪詢,提供配置更新接口;
Admin Service
- 服務(wù)于Admin模塊;
- 提供配置管理接口;
- 提供修改、發(fā)布配置等接口。
七、思考
1、為什么NginxLB與Eureka一起使用?不使用Eureka是否可行?
(1)負(fù)載均衡(Nginx LB)。具有高可用和容錯的特性,當(dāng)Apollo配置中心節(jié)點出現(xiàn)故障時,負(fù)載均衡器可以將流量重新路由到其他可用的節(jié)點上,從而實現(xiàn)系統(tǒng)的穩(wěn)定性。
(2)服務(wù)注冊與發(fā)現(xiàn)(Eureka)。Eureka可以幫助配置中心實現(xiàn)動態(tài)的服務(wù)注冊和發(fā)現(xiàn)。Config Service動態(tài)注冊到Eureka中,而Client通過Eureka獲取可用節(jié)點列表。從而實現(xiàn)動態(tài)獲取配置中心節(jié)點變化。
(3)綜合使用Nginx負(fù)載均衡和Eureka注冊中心,可以提高配置中心的可用性和容錯性。這種架構(gòu)允許系統(tǒng)在動態(tài)環(huán)境中靈活地處理配置中心(Config Service)節(jié)點的變化,并且確保客戶端(Client)始終能夠訪問到可用的的配置中心(Config Service)節(jié)點。
(4)不使用Eureka,只使用Nginx負(fù)載均衡是可行的。這種情況下配置中心節(jié)點(Config Service)由Nginx進(jìn)行負(fù)載均衡和請求分發(fā),不需要Eureka進(jìn)行服務(wù)注冊與服務(wù)發(fā)現(xiàn)。優(yōu)點是架構(gòu)簡單,缺點是Nginx雖然可以感知到節(jié)點不可用,但其并不具備動態(tài)節(jié)點管理的能力,當(dāng)新的節(jié)點加入時,Eureka能夠及時發(fā)現(xiàn)且自動地處理,而Nginx則需要人工干預(yù)。
2、Confg Service 、Admin Service以及Portal為什么作為獨立應(yīng)用單獨部署?
(1)Confg Service和Admin Service獨立部署,是從功能解耦上考慮,Confg Service服務(wù)于Client端負(fù)責(zé)處理配置相關(guān)邏輯,而Admin Service服務(wù)于Portal管理平臺,提供接口給Portal進(jìn)行使用。從產(chǎn)品迭代角度來分析Admin Service因為服務(wù)于Protal管理平臺其迭代頻率會高于Confg Service,分開獨立部署能夠提升開發(fā)靈活性以及降低發(fā)布風(fēng)險。
(2)Admin Service和Portal獨立部署,是為了環(huán)境隔離時,Protal能夠調(diào)用不同Service提供的API接口,進(jìn)行不同環(huán)境配置的統(tǒng)一管理。
最后
懂得不多,做得太少。歡迎批評、指正。
總結(jié)
以上是生活随笔為你收集整理的Apollo系列之架构设计(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flink异步IO
- 下一篇: RocketMQ事务消息在订单创建和库存