2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Ribbon負載均衡算法父接口IRule接口介紹

更新時間:2020-11-19 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

默認情況下,Ribbon使用的負載均衡策略是輪詢,實際上,Ribbon提供了很多負載均衡算法,其中IRule接口就是所有負載均衡算法的父接口,它的實現類結構如下圖所示。

1605780364715_ribbon負責策略.jpg

IRule接口實現類結構

在下圖中,AbstractLoadBalancerRule是負載均衡策略的抽象類,該抽象類中定義了負載均衡器ILoaderBalancer對象,該對象能夠在具體實現選擇服務策略時,獲取到一些負載均衡器中維護的信息作為分配依據,并以此設計一些算法來實現針對特定場景的高效策略。

在上圖中,各個實現類實現了一種負載均衡算法,關于這些實現類的具體介紹如下:

● RoundRobinRule:實現了按照線性輪詢的方式依次選擇服務的功能。

● WeightedResponseTimeRule: 它是對RoundRobinRule的擴展,會根據平均響應時間計算所有服務的權重,響應時間越快,服務權重越大,被選中的概率越高。

● ZoneAvoidanceRule:它是PredicateBasedRule的具體實現類,其內部通過使用ZoneAvoidancePredicate和AvailabilityPredicate判斷是否選擇某個服務,前者用于判斷服務所在區域的性能是否可用,后者用于過濾掉連接數過多的服務。

● AvailabilityFilteringRule: 使用AvailabilityPredicate過濾由于多次訪問故障而處于斷路器跳閘狀態的服務,還有并發的連接數超過閥值的服務,然后對剩余的服務列表進行輪詢。

● BestAvailableRule:用于先過濾掉多次訪問故障而處于斷路跳閘狀態的服務,然后選擇一個并發量最小的服務。

● RetryRule: 該策略實現了一個具備重試功能的服務選擇功能,其內部會先按照輪詢策略獲取服務,如果獲取失敗則在指定時間內重試,獲取可用服務。

● RandomRule:該策略實現了從服務清單中隨機選擇一個服務的功能。

● ClientConfigEnableRoundRobinRule:該類是一個抽象類,該類本身沒有實現什么特殊的處理邏輯,我們也不會直接使用該策略,但是通過BestAvailableRule和繼承該策略默認實現了線性輪詢,它的內部定義了一個RoundRobinRule策略,

● PredicateBasedRule:繼承了ClientConfigEnableRoundRobinRule,其內部會先通過chooseRoundRobinAfterFiltering()方法篩選服務清單,然后以線性輪詢的方式從過濾后的服務清單中選擇一個服務。


猜你喜歡:
JDK安裝教程:Jdk怎么安裝?

JDK環境變量配置win10視頻教程

分布式鎖是什么?有什么作用?

IO和NIO有什么區別?NIO有什么優點?

黑馬Java高級軟件工程師培訓課程



分享到:
在線咨詢 我要報名
和我們在線交談!