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

Spring Cloud 中七種負載均衡策略!

開發(fā) 前端
Ribbon 內(nèi)置了 7 種負載均衡策略:輪詢策略、權重策略、隨機策略、最小連接數(shù)策略、重試策略、可用性敏感策略、區(qū)域性敏感策略,并且用戶可以通過繼承 RoundRibbonRule 來實現(xiàn)自定義負載均衡策略。

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

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

Ribbon 介紹

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

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

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

圖片


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

圖片

負載均衡設置

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

springcloud-nacos-provider: # nacos中的服務id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #設置負載均衡策略

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

圖片

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

圖片

然后,我們再將 Ribbon 負載均衡策略設置為隨機模式,配置內(nèi)容如下:

springcloud-nacos-provider: # nacos中的服務id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設置隨機負載均衡

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

圖片

7種負載均衡策略

1、輪詢策略

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

springcloud-nacos-provider: # nacos中的服務id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #設置負載均衡

2、權重策略

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

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

3、隨機策略

隨機策略:RandomRule,從服務提供者的列表中隨機選擇一個服務實例。此策略的配置設置如下:

springcloud-nacos-provider: # nacos中的服務id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設置負載均衡

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

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

springcloud-nacos-provider: # nacos中的服務id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #設置負載均衡

5、重試策略

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

ribbon:
ConnectTimeout: 2000 # 請求連接的超時時間
ReadTimeout: 5000 # 請求處理的超時時間
springcloud-nacos-provider: # nacos 中的服務 id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #設置負載均衡

6、可用性敏感策略

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

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

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

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

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

項目源碼

?https://gitee.com/mydb/spring-cloud-alibaba-example?。

總結

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

責任編輯:姜華 來源: Java中文社群
相關推薦

2022-03-14 07:40:14

RibbonSpringNacos

2023-08-29 17:51:22

Ribbon客戶端均衡器

2024-01-04 12:48:00

Spring

2014-01-10 10:42:33

2022-07-13 09:36:26

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

2010-04-20 12:49:27

負載均衡策略

2010-05-10 16:20:32

負載均衡策略

2024-05-13 18:35:06

負載均衡主機端口

2024-06-07 13:04:02

2022-02-24 21:00:09

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

2010-10-15 10:02:01

Mysql表類型

2025-05-13 08:20:58

2024-08-30 09:38:22

2022-02-18 11:07:51

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

2011-03-14 10:46:03

2010-06-08 09:49:45

UML元件

2023-12-22 14:27:30

2025-01-21 08:00:00

限流微服務算法

2024-12-05 10:37:36

Java純函數(shù)final

2019-10-29 06:30:31

告警疲勞網(wǎng)絡安全安全風險
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰97人人人人人蜜桃 | 午夜精品一区二区三区免费视频 | 日韩高清一区二区 | 久久亚洲精品视频 | 色站综合 | 久久久av中文字幕 | 伊人久久综合 | 亚洲精品成人 | 欧美亚洲第一区 | 国产欧美在线播放 | 天天干在线播放 | 午夜精品影院 | 亚洲黄色av| 免费看啪啪网站 | 国产97人人超碰caoprom | 欧美日韩亚洲视频 | 国产视频中文字幕在线观看 | 日日爱视频 | 少妇午夜一级艳片欧美精品 | 欧美精品一区二区三 | 天堂在线一区 | 欧美精品video| 精品91视频 | 日韩第一夜 | 99亚洲精品视频 | 久久久久久综合 | 天天操天天干天天爽 | 四虎影院久久 | 欧美日韩一区二区三区不卡视频 | 欧美在线观看一区二区 | 秋霞国产 | 亚洲精品18 | 国产福利在线视频 | 久久精品一二三影院 | 欧美精品一区二区三区在线播放 | 狠狠躁夜夜躁人人爽天天高潮 | 91久久久久久久久久久 | 国产亚洲精品久久19p | 影音先锋男 | 影音先锋中文字幕在线观看 | 亚洲一区免费视频 |