成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringCloud Ribbon中的七種負(fù)載均衡策略!

開發(fā) 架構(gòu)
Ribbon 是 Spring Cloud 技術(shù)棧中非常重要的基礎(chǔ)框架,它為 Spring Cloud 提供了負(fù)載均衡的能力,比如 Fegin 和 OpenFegin 都是基于 Ribbon 實(shí)現(xiàn)的,就連 Nacos 中的負(fù)載均衡也使用了 Ribbon 框架。

作者 | 磊哥

來源 | Java中文社群(ID:javacn666)

轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信ID:GG_Stone)

負(fù)載均衡通器常有兩種實(shí)現(xiàn)手段,一種是服務(wù)端負(fù)載均衡器,另一種是客戶端負(fù)載均衡器,而我們今天的主角 Ribbon 就屬于后者——客戶端負(fù)載均衡器。

服務(wù)端負(fù)載均衡器的問題是,它提供了更強(qiáng)的流量控制權(quán),但無法滿足不同的消費(fèi)者希望使用不同負(fù)載均衡策略的需求,而使用不同負(fù)載均衡策略的場景確實(shí)是存在的,所以客戶端負(fù)載均衡就提供了這種靈活性。然而客戶端負(fù)載均衡也有其缺點(diǎn),如果配置不當(dāng),可能會(huì)導(dǎo)致服務(wù)提供者出現(xiàn)熱點(diǎn),或者壓根就拿不到任何服務(wù)的情況,所以我們本文就來了解一下這 7 種內(nèi)置負(fù)載均衡策略的具體規(guī)則。

Ribbon 介紹

Ribbon 是 Spring Cloud 技術(shù)棧中非常重要的基礎(chǔ)框架,它為 Spring Cloud 提供了負(fù)載均衡的能力,比如 Fegin 和 OpenFegin 都是基于 Ribbon 實(shí)現(xiàn)的,就連 Nacos 中的負(fù)載均衡也使用了 Ribbon 框架。

Ribbon 框架的強(qiáng)大之處在于,它不僅內(nèi)置了 7 種負(fù)載均衡策略,同時(shí)還支持用戶自定義負(fù)載均衡策略,所以其開放性和便利性也是它得以流行的主要原因。

服務(wù)端負(fù)載均衡器和客戶端負(fù)載均衡器的區(qū)別如下圖所示:

客戶端負(fù)載均衡器的實(shí)現(xiàn)原理是通過注冊(cè)中心,如 Nacos,將可用的服務(wù)列表拉取到本地(客戶端),再通過客戶端負(fù)載均衡器(設(shè)置的負(fù)載均衡策略)獲取到某個(gè)服務(wù)器的具體 ip 和端口,然后再通過 Http 框架請(qǐng)求服務(wù)并得到結(jié)果,其執(zhí)行流程如下圖所示:

負(fù)載均衡設(shè)置

以 Nacos 中的 Ribbon 負(fù)載均衡設(shè)置為例,在配置文件 application.yml 中設(shè)置如下配置即可:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #設(shè)置負(fù)載均衡策略

因?yàn)?Nacos 中已經(jīng)內(nèi)置了 Ribbon,所以在實(shí)際項(xiàng)目開發(fā)中無需再添加 Ribbon 依賴了,這一點(diǎn)我們?cè)?Nacos 的依賴樹中就可以看到,如下圖所示:

Ribbon 默認(rèn)的負(fù)載均衡策略是輪詢模式,我們配置 3 個(gè)服務(wù)提供者的執(zhí)行結(jié)果如下圖所示:

然后,我們?cè)賹?Ribbon 負(fù)載均衡策略設(shè)置為隨機(jī)模式,配置內(nèi)容如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設(shè)置隨機(jī)負(fù)載均衡

重啟客戶端,執(zhí)行結(jié)果如下圖所示:

七種負(fù)載均衡策略

1、輪詢策略

輪詢策略:RoundRobinRule,按照一定的順序依次調(diào)用服務(wù)實(shí)例。比如一共有 3 個(gè)服務(wù),第一次調(diào)用服務(wù) 1,第二次調(diào)用服務(wù) 2,第三次調(diào)用服務(wù)3,依次類推。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #設(shè)置負(fù)載均衡

2、權(quán)重策略

權(quán)重策略:WeightedResponseTimeRule,根據(jù)每個(gè)服務(wù)提供者的響應(yīng)時(shí)間分配一個(gè)權(quán)重,響應(yīng)時(shí)間越長,權(quán)重越小,被選中的可能性也就越低。它的實(shí)現(xiàn)原理是,剛開始使用輪詢策略并開啟一個(gè)計(jì)時(shí)器,每一段時(shí)間收集一次所有服務(wù)提供者的平均響應(yīng)時(shí)間,然后再給每個(gè)服務(wù)提供者附上一個(gè)權(quán)重,權(quán)重越高被選中的概率也越大。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

3、隨機(jī)策略

隨機(jī)策略:RandomRule,從服務(wù)提供者的列表中隨機(jī)選擇一個(gè)服務(wù)實(shí)例。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設(shè)置負(fù)載均衡

4、最小連接數(shù)策略

最小連接數(shù)策略:BestAvailableRule,也叫最小并發(fā)數(shù)策略,它是遍歷服務(wù)提供者列表,選取連接數(shù)最小的?個(gè)服務(wù)實(shí)例。如果有相同的最小連接數(shù),那么會(huì)調(diào)用輪詢策略進(jìn)行選取。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #設(shè)置負(fù)載均衡

5、重試策略

重試策略:RetryRule,按照輪詢策略來獲取服務(wù),如果獲取的服務(wù)實(shí)例為 null 或已經(jīng)失效,則在指定的時(shí)間之內(nèi)不斷地進(jìn)行重試來獲取服務(wù),如果超過指定時(shí)間依然沒獲取到服務(wù)實(shí)例則返回 null。此策略的配置設(shè)置如下:

ribbon:
ConnectTimeout: 2000 # 請(qǐng)求連接的超時(shí)時(shí)間
ReadTimeout: 5000 # 請(qǐng)求處理的超時(shí)時(shí)間
springcloud-nacos-provider: # nacos 中的服務(wù) id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設(shè)置負(fù)載均衡

6、可用性敏感策略

可用敏感性策略:AvailabilityFilteringRule,先過濾掉非健康的服務(wù)實(shí)例,然后再選擇連接數(shù)較小的服務(wù)實(shí)例。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule

7、區(qū)域敏感策略

區(qū)域敏感策略:ZoneAvoidanceRule,根據(jù)服務(wù)所在區(qū)域(zone)的性能和服務(wù)的可用性來選擇服務(wù)實(shí)例,在沒有區(qū)域的環(huán)境下,該策略和輪詢策略類似。此策略的配置設(shè)置如下:

springcloud-nacos-provider: # nacos中的服務(wù)id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.ZoneAvoidanceRule

項(xiàng)目源碼https://gitee.com/mydb/spring-cloud-alibaba-example。

總結(jié)

Ribbon 為客戶端負(fù)載均衡器,相比于服務(wù)端負(fù)載均衡器的統(tǒng)一負(fù)載均衡策略來說,它提供了更多的靈活性。Ribbon 內(nèi)置了 7 種負(fù)載均衡策略:輪詢策略、權(quán)重策略、隨機(jī)策略、最小連接數(shù)策略、重試策略、可用性敏感策略、區(qū)域性敏感策略,并且用戶可以通過繼承 RoundRibbonRule 來實(shí)現(xiàn)自定義負(fù)載均衡策略。

責(zé)任編輯:姜華 來源: Java中文社群
相關(guān)推薦

2023-02-14 08:32:41

Ribbon負(fù)載均衡

2023-10-27 17:23:03

Ribbon負(fù)載均衡策略

2023-08-29 17:51:22

Ribbon客戶端均衡器

2023-11-09 09:08:38

RibbonSpring

2024-06-07 13:04:02

2022-07-13 09:36:26

產(chǎn)品開發(fā)

2025-05-13 08:20:58

2014-01-10 10:42:33

2022-02-18 11:07:51

數(shù)字化轉(zhuǎn)型運(yùn)營技術(shù)

2022-02-24 21:00:09

數(shù)字化DX轉(zhuǎn)型

2022-05-10 08:08:01

find命令Linux

2020-01-14 08:00:00

.NET緩存編程語言

2025-01-21 08:00:00

限流微服務(wù)算法

2010-05-10 16:20:32

負(fù)載均衡策略

2010-04-20 12:49:27

負(fù)載均衡策略

2024-12-05 10:37:36

Java純函數(shù)final

2010-10-15 10:02:01

Mysql表類型

2024-08-30 09:38:22

2010-05-10 15:22:57

實(shí)現(xiàn)負(fù)載均衡

2010-04-28 12:52:36

負(fù)載均衡策略
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天天草天天操 | 九九综合 | 久久国产精品免费一区二区三区 | 一区二区日韩精品 | 日韩一区二区三区在线观看 | 91免费在线视频 | 久久精品久久久久久 | 亚洲精品免费在线观看 | 91精品国产综合久久福利软件 | 国产激情在线 | 精品久久久久久中文字幕 | 日韩欧美久久 | 亚洲影音先锋 | 亚洲不卡在线观看 | 国产成人综合久久 | 一区二区三区视频在线观看 | 日韩免费视频一区二区 | 大乳boobs巨大吃奶挤奶 | 免费高清av | 精品久久成人 | 国产精品视频久久久久 | 亚洲欧美一区二区三区国产精品 | 亚洲精品在线视频 | av资源中文在线 | 欧美日韩一区在线播放 | 亚洲国产精品一区二区第一页 | 91欧美激情一区二区三区成人 | 欧美日韩在线一区二区 | japanhd成人 | a网站在线观看 | 日韩欧美视频免费在线观看 | 在线看av网址 | 看片一区 | 影音先锋中文在线 | 婷婷精品| 成人在线中文字幕 | 九色视频网站 | 国产精品一区二区福利视频 | 国产成人精品免高潮在线观看 | 免费一区 | 精品一区二区三区在线观看国产 |