Dubbo之RPC架构
為什么會(huì)有dubbo的出現(xiàn):
? 隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無(wú)法應(yīng)對(duì),分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行,亟需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。
- 單一應(yīng)用架構(gòu)
- 當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。
- 此時(shí),用于簡(jiǎn)化增刪改查工作量的??數(shù)據(jù)訪問(wèn)框架(ORM)??是關(guān)鍵。
- 垂直應(yīng)用架構(gòu)
- 當(dāng)訪問(wèn)量逐漸增大,單一應(yīng)用增加機(jī)器帶來(lái)的加速度越來(lái)越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。
- 此時(shí),用于加速前端頁(yè)面開(kāi)發(fā)的??Web框架(MVC)??是關(guān)鍵。
- 分布式服務(wù)架構(gòu)
- 當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來(lái),作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求。
- 此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的??分布式服務(wù)框架(RPC)??是關(guān)鍵。
- 流動(dòng)計(jì)算架構(gòu)
- 當(dāng)服務(wù)越來(lái)越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問(wèn)壓力實(shí)時(shí)管理集群容量,提高集群利用率。
- 此時(shí),用于提高機(jī)器利用率的??資源調(diào)度和治理中心(SOA)??是關(guān)鍵。
在大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過(guò)RMI或Hessian等工具,簡(jiǎn)單的暴露和引用遠(yuǎn)程服務(wù),通過(guò)配置服務(wù)的URL地址進(jìn)行調(diào)用,通過(guò)F5等硬件進(jìn)行負(fù)載均衡。
(1) 當(dāng)服務(wù)越來(lái)越多時(shí),服務(wù)URL配置管理變得非常困難,F5硬件負(fù)載均衡器的單點(diǎn)壓力也越來(lái)越大。
此時(shí)需要一個(gè)服務(wù)注冊(cè)中心,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明。
并通過(guò)在消費(fèi)方獲取服務(wù)提供方地址列表,實(shí)現(xiàn)軟負(fù)載均衡和Failover,降低對(duì)F5硬件負(fù)載均衡器的依賴,也能減少部分成本。
(2) 當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng),架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。
這時(shí),需要自動(dòng)畫出應(yīng)用間的依賴關(guān)系圖,以幫助架構(gòu)師理清理關(guān)系。
(3) 接著,服務(wù)的調(diào)用量越來(lái)越大,服務(wù)的容量問(wèn)題就暴露出來(lái),這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器?
為了解決這些問(wèn)題,第一步,要將服務(wù)現(xiàn)在每天的調(diào)用量,響應(yīng)時(shí)間,都統(tǒng)計(jì)出來(lái),作為容量規(guī)劃的參考指標(biāo)。
其次,要可以動(dòng)態(tài)調(diào)整權(quán)重,在線上,將某臺(tái)機(jī)器的權(quán)重一直加大,并在加大的過(guò)程中記錄響應(yīng)時(shí)間的變化,直到響應(yīng)時(shí)間到達(dá)閥值,記錄此時(shí)的訪問(wèn)量,再以此訪問(wèn)量乘以機(jī)器數(shù)反推總?cè)萘俊?/span>
以上是Dubbo最基本的幾個(gè)需求,更多服務(wù)治理問(wèn)題參見(jiàn):
節(jié)點(diǎn)角色說(shuō)明:
- Provider:??暴露服務(wù)的服務(wù)提供方。
- Consumer:??調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。
- Registry:??服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。
- Monitor:??統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。
- Container:??服務(wù)運(yùn)行容器。
調(diào)用關(guān)系說(shuō)明:
- 0. 服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。
- 1. 服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
- 2. 服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。
- 3. 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。
- 4. 服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。
- 5. 服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。
總結(jié)
以上是生活随笔為你收集整理的Dubbo之RPC架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: css标签总结大全
- 下一篇: 【VMware vSAN 6.6】6.2