天天看點

SpringCloud分布式系統之Ribbon負載均衡,IRule元件,7個算法使用

Ribbon有7個小算法,使用也簡單,直接配置就可以使用

1、RoundRobinRule----預設算法,輪詢

@Bean
    public IRule RoundRobinRule(){
        return new RoundRobinRule();
    }
           

2、RandomRule----随機

@Bean
    public IRule RandomRule(){
        return new RandomRule();
    }
           

3、AvailabilityFilteringRule----會先過濾掉由于多次通路故障而處于斷路器跳閘狀态的服務,還有并發的連接配接數量超過門檻值的服務,然後對剩餘的服務清單按照輪詢政策進行通路

@Bean
    public IRule AvailabilityFilteringRule(){
        return new AvailabilityFilteringRule();
    }
           

4、WeightedResponseTimeRule----根據平均響應時間計算所有服務的權重,響應時間越快服務權重越大被選中的機率越高。剛啟動時如果統計資訊不足,則使用RoundRobinRule政策,等統計資訊足夠,會切換到WeightedResponseTimeRule

@Bean
    public IRule WeightedResponseTimeRule(){
        return new WeightedResponseTimeRule();
    }
           

5、RetryRule----先按照RoundRobinRule的政策擷取服務,如果擷取服務失敗則在指定時間内會進行重試,擷取可用的服務

@Bean
    public IRule RetryRule(){
        return new RetryRule();
    }
           

6、BestAvailableRule----會先過濾掉由于多次通路故障而處于斷路器跳閘狀态的服務,然後選擇一個并發量最小的服務

@Bean
    public IRule BestAvailableRule(){
        return new BestAvailableRule();
    }
           

7、ZoneAvoidanceRule----預設規則,複合判斷server所在區域的性能和server的可用性選擇伺服器

@Bean
    public IRule ZoneAvoidanceRule(){
        return new ZoneAvoidanceRule();
    }
           

繼續閱讀