最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Cloud?Ribbon?中的?7?種負(fù)載均衡策略的實現(xiàn)方法

 更新時間:2022年03月14日 10:38:59   作者:Java中文社群  
Ribbon?內(nèi)置了?7?種負(fù)載均衡策略:輪詢策略、權(quán)重策略、隨機策略、最小連接數(shù)策略、重試策略、可用性敏感策略、區(qū)域性敏感策略,并且用戶可以通過繼承?RoundRibbonRule?來實現(xiàn)自定義負(fù)載均衡策略,對Spring?Cloud?Ribbon負(fù)載均衡策略相關(guān)知識感興趣的朋友一起看看吧

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

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

Ribbon 介紹

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

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

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


客戶端負(fù)載均衡器的實現(xiàn)原理是通過注冊中心,如 Nacos,將可用的服務(wù)列表拉取到本地(客戶端),再通過客戶端負(fù)載均衡器(設(shè)置的負(fù)載均衡策略)獲取到某個服務(wù)器的具體 ip 和端口,然后再通過 Http 框架請求服務(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ù)載均衡策略

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

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

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

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

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

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

1.輪詢策略

輪詢策略:RoundRobinRule,按照一定的順序依次調(diào)用服務(wù)實例。比如一共有 3 個服務(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ù)每個服務(wù)提供者的響應(yīng)時間分配一個權(quán)重,響應(yīng)時間越長,權(quán)重越小,被選中的可能性也就越低。
它的實現(xiàn)原理是,剛開始使用輪詢策略并開啟一個計時器,每一段時間收集一次所有服務(wù)提供者的平均響應(yīng)時間,然后再給每個服務(wù)提供者附上一個權(quán)重,權(quán)重越高被選中的概率也越大。
此策略的配置設(shè)置如下:

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

3.隨機策略

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

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

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

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

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

5.重試策略

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

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

6.可用性敏感策略

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

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

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

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

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

項目源碼

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

總結(jié)

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

到此這篇關(guān)于Spring Cloud Ribbon 中的 7 種負(fù)載均衡策略的文章就介紹到這了,更多相關(guān)Spring Cloud Ribbon負(fù)載均衡策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • maven項目test執(zhí)行main找不到資源文件的問題及解決

    maven項目test執(zhí)行main找不到資源文件的問題及解決

    這篇文章主要介紹了maven項目test執(zhí)行main找不到資源文件的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot Jpa企業(yè)開發(fā)示例詳細(xì)講解

    SpringBoot Jpa企業(yè)開發(fā)示例詳細(xì)講解

    這篇文章主要介紹了SpringBoot Jpa企業(yè)開發(fā)示例,Jpa可以通過實體類生成數(shù)據(jù)庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便
    2022-11-11
  • Java實現(xiàn)學(xué)生管理系統(tǒng)(控制臺版本)

    Java實現(xiàn)學(xué)生管理系統(tǒng)(控制臺版本)

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)控制臺版本的學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java實現(xiàn)文件點擊沒反應(yīng)的方法

    Java實現(xiàn)文件點擊沒反應(yīng)的方法

    jsp頁面鏈接,點擊訪問action用IO流去下載服務(wù)器上的文件,問題是任憑怎么點擊都沒反應(yīng),日志也不報錯。這篇文章給大家介紹Java實現(xiàn)文件點擊沒反應(yīng)的方法,需要的朋友參考下吧
    2018-07-07
  • spring+hibernate 兩種整合方式配置文件的方法

    spring+hibernate 兩種整合方式配置文件的方法

    本篇文章主要介紹了spring+hibernate 兩種整合方式配置文件的方法,主要有兩種方式 1、注解方式 2、xml方式實現(xiàn),有興趣的可以了解一下。
    2017-04-04
  • 如何使用JJWT及JWT講解和工具類

    如何使用JJWT及JWT講解和工具類

    關(guān)于JWT的文章網(wǎng)上已經(jīng)多如牛毛了,但是相信很多同學(xué)學(xué)的還是云里霧里,所以在我學(xué)習(xí)JWT之后盡量用最簡潔的描述寫下這篇文章用于日后復(fù)習(xí),與此同時也希望可以幫助同學(xué)們共同進(jìn)步
    2021-09-09
  • SpringMVC的注解@RequestMapping屬性及使用

    SpringMVC的注解@RequestMapping屬性及使用

    這篇文章主要為大家介紹了SpringMVC注解@RequestMapping屬性及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • eclipse連接不到genymotion問題的解決方案

    eclipse連接不到genymotion問題的解決方案

    今天小編就為大家分享一篇關(guān)于eclipse連接不到genymotion問題的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 帶你盤點Java的五種運算符

    帶你盤點Java的五種運算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結(jié)合實例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運算符、邏輯運算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-07-07
  • Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼

    Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼

    這篇文章主要為大家詳細(xì)介紹了Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

买车| 太和县| 娄烦县| 乐业县| 聂拉木县| 周宁县| 石首市| 巨野县| 丽江市| 平安县| 辽源市| 讷河市| 阿合奇县| 桐庐县| 大港区| 昂仁县| 宜章县| 弥渡县| 普定县| 湘阴县| 昌乐县| 普陀区| 临猗县| 镇坪县| 惠州市| 克东县| 剑阁县| 平果县| 滦南县| 阳东县| 武安市| 沁阳市| 拉萨市| 临沭县| 资兴市| 安塞县| 平山县| 临泉县| 庐江县| 江西省| 德安县|