SpringCloudRibbonの負荷分散戦略とカスタム構成
1.リボンは、HTTPとTCPに基づく客户端
負荷分散ツールです。NetFlixリボンに基づいています。サービス指向のREST要求をクライアント側の負荷分散されたサービス呼び出しに自動的に変換できます。
2.コアコンポーネント
com.netflix.loadbalancer.IRule
クラスは、すべての負荷分散戦略の親クラスです。負荷分散戦略は、そのサブクラスに基づいて実装されます。UML図は次のとおりです。
3.リボンの7つの負荷分散モード
デフォルトの戦略は次のとおりです。RoundRobinRule(轮询策略)
戦略モード | 説明 |
---|---|
RetryRule | 再試行戦略:(最初にポーリング戦略に従ってサーバーを取得します。取得が失敗した場合は、再試行を続けます) |
RandomRule | ランダム戦略:(サーバーをランダムに選択) |
RoundRobinRule | (默认策略 )ポーリング戦略:(サーバーを順番に選択) |
BestAvailableRule | 最小の同時実行戦略:(最初に、複数のアクセス障害のためにサーキットブレーカートリップ状態にあるサーバーをフィルターで除外し、次に最小の同時実行性を持つサーバーを選択します) |
ZoneAvoidanceRule | 地域のトレードオフ戦略:(サーバーが配置されているエリアのパフォーマンスと可用性を総合的に判断し、サーバーを選択します) |
AvailabilityFilteringRule | 使用可能なフィルタリング戦略:(最初に、複数のアクセス障害のためにサーキットブレーカートリップ状態にあるサーバー、および同時接続数がしきい値を超えるサーバーをフィルターで除外し、次に残りのサーバーのリストをポーリングします) |
ResponseTimeWeightedRule | 応答時間の重み付け戦略:(重みは応答時間に応じて割り当てられます。時間が長いほど、重みが低くなり、選択される可能性が低くなります。応答時間が短いほど、重みが高くなり、存在する可能性が高くなります。この戦略は、ネットワーク、ディスク、IO、およびその他の要素を統合します。これらの要素は、サーバーの応答時間に直接影響します) |
4.カスタム負荷分散戦略
構成クラスを介して負荷分散戦略を実装する
A:
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author layman
* @description: 自定义ribbon的负载均衡配置类
*/
@Configuration
public class MyRule {
@Bean
public IRule myRule(){
//切换为随机模式
return new RandomRule();
}
}
B:
SpringBootスタートアップクラスにアノテーションを追加する
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MyRule.class)
> // name:要访问的服务实例名
> // configuration:自定义额配置类