Spring Cloud Ribbon客戶端詳細介紹
前言
Spring Cloud Ribbon是基于Netflix Ribbon實現的一套客戶端 負載均衡的工具。(負載均衡+RestTemplate調用)
簡單的說,Ribbon是Netflix發(fā)布的開源項目,主要功能是提供客戶端的軟件負載均衡算法和服務調用。Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等。簡單的說,就是在配置文件中列出Load Balancer(簡稱LB)后面所有的機器,Ribbon會自動的幫助你基于某種規(guī)則(如簡單輪詢,隨機連接等)去連接這些機器。我們很容易使用Ribbon實現自定義的負載均衡算法。
官網地址-傳送門
LB負載均衡(Load Balance)是什么
簡單的說就是將用戶的請求平攤的分配到多個服務上,從而達到系統(tǒng)的HA(高可用)。
常見的負載均衡有軟件Nginx,LVS,硬件 F5等。
Ribbon本地負載均衡客戶端 VS Nginx服務端負載均衡區(qū)別
Nginx是服務器負載均衡,客戶端所有請求都會交給nginx,然后由nginx實現轉發(fā)請求。即負載均衡是由服務端實現的。
Ribbon本地負載均衡,在調用微服務接口時候,會在注冊中心上獲取注冊信息服務列表之后緩存到JVM本地,從而在本地實現RPC遠程服務調用技術。
集中式LB-->
即在服務的消費方和提供方之間使用獨立的LB設施(可以是硬件,如F5, 也可以是軟件,如nginx), 由該設施負責把訪問請求通過某種策略轉發(fā)至服務的提供方;
進程內LB-->
將LB邏輯集成到消費方,消費方從服務注冊中心獲知有哪些地址可用,然后自己再從這些地址中選擇出一個合適的服務器。
Ribbon就屬于進程內LB,它只是一個類庫,集成于消費方進程,消費方通過它來獲取到服務提供方的地址。
Ribbon核心組件IRule
IRule:根據特定算法中從服務列表中選取一個要訪問的服務
如何替換
官方文檔明確給出了警告:
這個自定義配置類不能放在@ComponentScan所掃描的當前包下以及子包下,
否則我們自定義的這個配置類就會被所有的Ribbon客戶端所共享,達不到特殊化定制的目的了。
修改為隨機
@Configuration public class MySelfRule { @Bean public IRule myRule() { return new RandomRule();//定義為隨機 } }
@SpringBootApplication @EnableEurekaClient @RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration=MySelfRule.class) public class OrderMain80 { public static void main(String[] args) { SpringApplication.run(OrderMain80.class,args); } }
到此這篇關于Spring Cloud Ribbon客戶端詳細介紹的文章就介紹到這了,更多相關Spring Cloud Ribbon內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MybatisPlus實現分頁效果并解決錯誤問題:cant?found?IPage?for?args
這篇文章主要介紹了MybatisPlus實現分頁效果并解決錯誤:cant?found?IPage?for?args,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02深入Synchronized和java.util.concurrent.locks.Lock的區(qū)別詳解
本篇文章是對Synchronized和java.util.concurrent.locks.Lock的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-06-06Spring?MVC中的Controller進行單元測試的實現
本文主要介紹了如何對Spring?MVC中的Controller進行單元測試的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02java獲取request中的參數以及java解析URL問號后的參數
這篇文章主要介紹了java獲取request中的參數以及java解析URL問號后的參數問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12