【SpringCloud】之Ribbon負載均衡

SFD書方讀發表於2020-12-19

Ribbon 在工作時分成兩步:

第一步:先選擇 EurekaServer ,它優先選擇在同一個區域內負載較少的 server
第二步:根據使用者指定的策略,從 server 取到的服務註冊列表中選擇一個地址; 其中 Ribbon 提供了多種策略:比如輪詢,隨機和根據響應時間加權。

Ribbon 自帶負載均衡規則

負載均衡方式解釋
RoundRobinRule輪詢
RandomRule隨機
RetryRule先輪詢,如果失敗則在指定時間內重試
WeightedResponseTimeRule基於輪詢,響應速度越快的例項選擇權重越大,越容易被選擇
BestAvailableRule先過濾由於多次訪問故障而處於斷路由器跳閘狀態的服務,然後選擇一個併發量最小的服務
AvailabilityFilteringRule先過濾掉故障例項,再選擇併發較小的例項
ZoneAvoidanceRule預設規則,符合判斷 server 所在區域的效能和server的可用性選擇伺服器

修改預設負載均衡規則

在 @ComponentScan 註解能掃描到的包之外新建負載均衡規則

package com.sfd.robbin.rule;

@Configuration
public class CustomRibbinRule {
    @Bean
    public IRule customRule() {
        return new RandomRule();
    }
}
package com.sfd.cloud;

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "PROVIDER-PAYMENT-SERVICE", configuration = CustomRibbinRule.class)
public class Order80Application {
    public static void main(String[] args) {
        SpringApplication.run(Order80Application.class, args);
    }
}

輪詢演算法原理

rest 介面第幾次請求數 % 伺服器叢集總數量 = 實際呼叫伺服器位置下標,每次伺服器重啟後 rest 介面計數從 1 開始。

在這裡插入圖片描述

相關文章