Spring Cloud Ribbon客戶(hù)端詳細(xì)介紹
前言
Spring Cloud Ribbon是基于Netflix Ribbon實(shí)現(xiàn)的一套客戶(hù)端 負(fù)載均衡的工具。(負(fù)載均衡+RestTemplate調(diào)用)
簡(jiǎn)單的說(shuō),Ribbon是Netflix發(fā)布的開(kāi)源項(xiàng)目,主要功能是提供客戶(hù)端的軟件負(fù)載均衡算法和服務(wù)調(diào)用。Ribbon客戶(hù)端組件提供一系列完善的配置項(xiàng)如連接超時(shí),重試等。簡(jiǎn)單的說(shuō),就是在配置文件中列出Load Balancer(簡(jiǎn)稱(chēng)LB)后面所有的機(jī)器,Ribbon會(huì)自動(dòng)的幫助你基于某種規(guī)則(如簡(jiǎn)單輪詢(xún),隨機(jī)連接等)去連接這些機(jī)器。我們很容易使用Ribbon實(shí)現(xiàn)自定義的負(fù)載均衡算法。
官網(wǎng)地址-傳送門(mén)
LB負(fù)載均衡(Load Balance)是什么
簡(jiǎn)單的說(shuō)就是將用戶(hù)的請(qǐng)求平攤的分配到多個(gè)服務(wù)上,從而達(dá)到系統(tǒng)的HA(高可用)。
常見(jiàn)的負(fù)載均衡有軟件Nginx,LVS,硬件 F5等。
Ribbon本地負(fù)載均衡客戶(hù)端 VS Nginx服務(wù)端負(fù)載均衡區(qū)別
Nginx是服務(wù)器負(fù)載均衡,客戶(hù)端所有請(qǐng)求都會(huì)交給nginx,然后由nginx實(shí)現(xiàn)轉(zhuǎn)發(fā)請(qǐng)求。即負(fù)載均衡是由服務(wù)端實(shí)現(xiàn)的。
Ribbon本地負(fù)載均衡,在調(diào)用微服務(wù)接口時(shí)候,會(huì)在注冊(cè)中心上獲取注冊(cè)信息服務(wù)列表之后緩存到JVM本地,從而在本地實(shí)現(xiàn)RPC遠(yuǎn)程服務(wù)調(diào)用技術(shù)。
集中式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就屬于進(jìn)程內(nèi)LB,它只是一個(gè)類(lèi)庫(kù),集成于消費(fèi)方進(jìn)程,消費(fèi)方通過(guò)它來(lái)獲取到服務(wù)提供方的地址。
Ribbon核心組件IRule
IRule:根據(jù)特定算法中從服務(wù)列表中選取一個(gè)要訪問(wèn)的服務(wù)
如何替換
官方文檔明確給出了警告:
這個(gè)自定義配置類(lèi)不能放在@ComponentScan所掃描的當(dāng)前包下以及子包下,
否則我們自定義的這個(gè)配置類(lèi)就會(huì)被所有的Ribbon客戶(hù)端所共享,達(dá)不到特殊化定制的目的了。
修改為隨機(jī)
@Configuration public class MySelfRule { @Bean public IRule myRule() { return new RandomRule();//定義為隨機(jī) } }
@SpringBootApplication @EnableEurekaClient @RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration=MySelfRule.class) public class OrderMain80 { public static void main(String[] args) { SpringApplication.run(OrderMain80.class,args); } }
到此這篇關(guān)于Spring Cloud Ribbon客戶(hù)端詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Spring Cloud Ribbon內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring?Cloud?Ribbon的使用原理解析
- SpringCloud超詳細(xì)講解負(fù)載均衡組件Ribbon源碼
- SpringCloud?客戶(hù)端Ribbon負(fù)載均衡的實(shí)現(xiàn)方法
- Spring?Cloud負(fù)載均衡組件Ribbon原理解析
- Spring?Cloud?Ribbon?中的?7?種負(fù)載均衡策略的實(shí)現(xiàn)方法
- 關(guān)于SpringCloud?Ribbon替換輪詢(xún)算法問(wèn)題
- 聊聊SpringCloud中的Ribbon進(jìn)行服務(wù)調(diào)用的問(wèn)題
- spring cloud 集成 ribbon負(fù)載均衡的實(shí)例代碼
- 深入理解Java SpringCloud Ribbon 負(fù)載均衡
相關(guān)文章
MybatisPlus實(shí)現(xiàn)分頁(yè)效果并解決錯(cuò)誤問(wèn)題:cant?found?IPage?for?args
這篇文章主要介紹了MybatisPlus實(shí)現(xiàn)分頁(yè)效果并解決錯(cuò)誤:cant?found?IPage?for?args,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Java線程和操作系統(tǒng)線程的關(guān)系解讀
這篇文章主要介紹了Java線程和操作系統(tǒng)線程的關(guān)系解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06深入Synchronized和java.util.concurrent.locks.Lock的區(qū)別詳解
本篇文章是對(duì)Synchronized和java.util.concurrent.locks.Lock的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Spring?MVC中的Controller進(jìn)行單元測(cè)試的實(shí)現(xiàn)
本文主要介紹了如何對(duì)Spring?MVC中的Controller進(jìn)行單元測(cè)試的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Java平臺(tái)調(diào)試體系原理分析和實(shí)踐整理 遠(yuǎn)程Debug
這篇文章主要介紹了Java平臺(tái)調(diào)試體系原理分析和實(shí)踐整理 遠(yuǎn)程Debug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07IntelliJ Idea 2017注冊(cè)碼免費(fèi)激活方法
IDEA 全稱(chēng) IntelliJ IDEA,是Java語(yǔ)言開(kāi)發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開(kāi)發(fā)工具之一。下面給大家介紹IntelliJ Idea 2017注冊(cè)碼免費(fèi)激活方法,需要的朋友參考下2018-01-01java獲取request中的參數(shù)以及java解析URL問(wèn)號(hào)后的參數(shù)
這篇文章主要介紹了java獲取request中的參數(shù)以及java解析URL問(wèn)號(hào)后的參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12@SpringBootTest 注解報(bào)紅問(wèn)題及解決
這篇文章主要介紹了@SpringBootTest 注解報(bào)紅問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11