负载均衡器 Ribbion
生活随笔
收集整理的這篇文章主要介紹了
负载均衡器 Ribbion
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前面我們?cè)谥v解Eureka的時(shí)候談到了,服務(wù)端發(fā)現(xiàn)和客戶端發(fā)現(xiàn),Eureka是屬于客戶端發(fā)現(xiàn)的方式,他的負(fù)載均衡是軟負(fù)載,也就是客戶端服務(wù)器,比如Eureka Server,拉取已注冊(cè)的服務(wù)信息,然后根據(jù)負(fù)載均衡策略,直接發(fā)送請(qǐng)求,這整個(gè)過(guò)程都是在客戶端完成的,并不需要服務(wù)器的參與,SpringCloud中客戶端負(fù)載均衡,都是Ribbon組件,它是基于Netflix Ribbon實(shí)現(xiàn)的,通過(guò)SpringCloud的封裝,可以輕松地面向服務(wù)的Rest服務(wù)請(qǐng)求,自動(dòng)轉(zhuǎn)換成客戶端,負(fù)載均衡服務(wù)調(diào)用,RestTemplate,Feign,以及后面我們要講解到的網(wǎng)關(guān)服務(wù),Zuul都使用到了Ribbon,SpringCloud在結(jié)合了Ribbon的負(fù)載均衡的實(shí)現(xiàn)中,封裝增加了HTTP Client,和OKHttp,兩種實(shí)現(xiàn),默認(rèn)使用Ribbon對(duì)Eureka服務(wù)發(fā)現(xiàn)的負(fù)載均衡,我們介紹了RestTempalte的三種實(shí)現(xiàn)方式,其中通過(guò)添加@LoadBalanced注解,或者直接寫代碼的時(shí)候使用,@LoadBalanced,其實(shí)用到的就是Ribbon的組件,添加@LoadBalanced注解后,Ribbon會(huì)通過(guò)@LoadBalanced自動(dòng)幫助你基于某種規(guī)則,比如簡(jiǎn)單的輪詢,隨機(jī)連接,去連接目標(biāo)服務(wù),從而很容易的實(shí)現(xiàn)負(fù)載均衡的算法,Ribbon實(shí)現(xiàn)負(fù)載均衡,核心有三點(diǎn),第一是服務(wù)發(fā)現(xiàn),也就是發(fā)現(xiàn)服務(wù)的列表,就是依據(jù)服務(wù)的名字,把該服務(wù)下所有的實(shí)例,都找出來(lái),第二點(diǎn)是服務(wù)選擇規(guī)則,依據(jù)規(guī)則策略,如何從一個(gè)服務(wù)中選擇一個(gè)有效的,最后一點(diǎn)是服務(wù)監(jiān)聽,也就是檢測(cè)失效的服務(wù),做到高效剔除
他的主要組件有ServerList,IRule,ServerListFilter等,他的整個(gè)流程是這樣子的,首先,通過(guò)ServerList,獲取所有的可用服務(wù)列表,然后通過(guò)ServerListFilter,過(guò)濾掉一部分地址,最后剩下的地址中,通過(guò)IRule選擇一個(gè)實(shí)例,作為最終目標(biāo)結(jié)果,這么說(shuō)大家可能會(huì)覺(jué)得比較空洞
?
總結(jié)
以上是生活随笔為你收集整理的负载均衡器 Ribbion的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RestTemplate的三种使用方式
- 下一篇: 追踪源码自定义负载均衡策略