javascript
SpringCloud Ribbon之概述(一)
一:Ribbon是什么?
?Ribbon是Netflix發(fā)布的開(kāi)源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法,將Netflix的中間層服務(wù)連接在一起。Ribbon客戶端組件提供一系列完善的配置項(xiàng)如連接超時(shí),重試等。簡(jiǎn)單的說(shuō),就是在配置文件中列出Load Balancer(簡(jiǎn)稱LB)后面所有的機(jī)器,Ribbon會(huì)自動(dòng)的幫助你基于某種規(guī)則(如簡(jiǎn)單輪詢,隨即連接等)去連接這些機(jī)器。我們也很容易使用Ribbon實(shí)現(xiàn)自定義的負(fù)載均衡算法。
二:LB能干嘛(方案分類)
目前主流的LB方案可分成兩類:一種是集中式LB, 即在服務(wù)的消費(fèi)方和提供方之間使用獨(dú)立的LB設(shè)施(可以是硬件,如F5, 也可以是軟件,如nginx), 由該設(shè)施負(fù)責(zé)把訪問(wèn)請(qǐng)求通過(guò)某種策略轉(zhuǎn)發(fā)至服務(wù)的提供方;另一種是進(jìn)程內(nèi)LB,將LB邏輯集成到消費(fèi)方,消費(fèi)方從服務(wù)注冊(cè)中心獲知有哪些地址可用,然后自己再?gòu)倪@些地址中選擇出一個(gè)合適的服務(wù)器。Ribbon就屬于后者,它只是一個(gè)類庫(kù),集成于消費(fèi)方進(jìn)程,消費(fèi)方通過(guò)它來(lái)獲取到服務(wù)提供方的地址。
三:Ribbon的主要組件與工作流程
Ribbon的核心組件(均為接口類型)有以下幾個(gè):
ServerList:用于獲取地址列表。它既可以是靜態(tài)的(提供一組固定的地址),也可以是動(dòng)態(tài)的(從注冊(cè)中心中定期查詢地址列表)。
ServerListFilter:僅當(dāng)使用動(dòng)態(tài)ServerList時(shí)使用,用于在原始的服務(wù)列表中使用一定策略過(guò)慮掉一部分地址。
IRule:選擇一個(gè)最終的服務(wù)地址作為L(zhǎng)B結(jié)果。選擇策略有輪詢、根據(jù)響應(yīng)時(shí)間加權(quán)、斷路器(當(dāng)Hystrix可用時(shí))等。
Ribbon在工作時(shí)首選會(huì)通過(guò)ServerList來(lái)獲取所有可用的服務(wù)列表,然后通過(guò)ServerListFilter過(guò)慮掉一部分地址,最后在剩下的地址中通過(guò)IRule選擇出一臺(tái)服務(wù)器作為最終結(jié)果。
四:Ribbon提供的主要負(fù)載均衡策略介紹
1:簡(jiǎn)單輪詢負(fù)載均衡(RoundRobin):以輪詢的方式依次將請(qǐng)求調(diào)度不同的服務(wù)器,即每次調(diào)度執(zhí)行i = (i + 1) mod n,并選出第i臺(tái)服務(wù)器。
2:隨機(jī)負(fù)載均衡 (Random):?隨機(jī)選擇狀態(tài)為UP的Server
3:加權(quán)響應(yīng)時(shí)間負(fù)載均衡 (WeightedResponseTime):根據(jù)相應(yīng)時(shí)間分配一個(gè)weight,相應(yīng)時(shí)間越長(zhǎng),weight越小,被選中的可能性越低。
4:區(qū)域感知輪詢負(fù)載均衡(ZoneAvoidanceRule):復(fù)合判斷server所在區(qū)域的性能和server的可用性選擇server Ribbon自帶負(fù)載均衡策略比較
Ribbon學(xué)習(xí)官網(wǎng)資料:https://github.com/Netflix/ribbon/wiki/Getting-Started
?
總結(jié)
以上是生活随笔為你收集整理的SpringCloud Ribbon之概述(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下启动和关闭网卡命令
- 下一篇: SpringCloud 入门教程(三):