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();
}