Ribbon 負荷分散

コンシューマによって開始されたリクエストはリボンによってインターセプトされ、リボンはユーレカからプロバイダリストを取得し、ユーレカはプロバイダリストを返し、リボンはIRuleに基づいてリクエストを開始するサーバを選択します。

詳細なインターセプション: リクエスト -> DynamicServerListLoadBalancer (URL 内のサービス ID、userService を取得) -> DynamicServerListLoadBalancer -> Eureka -> DynamicServerListLoadBalancer -> IRule -> DynamicServerListLoadBalancer -> リクエストの開始

負荷分散戦略

組み込みの負荷分散ルールクラス ルールの説明
ZoneAvoidanceRule(Eureka 默认) サーバーの選択は、その地域で利用可能なサーバーに基づいて行われます。ゾーンを使用してサーバーを分類します。このゾーンは、コンピューター ルーム、ラックなどとして理解できます。次にゾーン内の複数のサービスをポーリングします
RoundRobinRule サービス リストをポーリングするだけでサーバーを選択できます。これはリボンのデフォルトの負荷分散ルールです
AvailabilityFilteringRule 次の 2 種類のサーバーは無視されます: (1) デフォルトでは、このサーバーへの接続が 3 回失敗すると、サーバーは「短絡」状態に設定されます。短絡状態は30秒間続きます。接続が再度失敗すると、短絡の持続時間は指数関数的に増加します。 (2) 同時接続数が多すぎるサーバー。サーバーへの同時接続数が多すぎる場合、AvailabilityFilteringRule ルールが設定されたクライアントもそれを無視します。同時接続の上限は、クライアントの<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimitプロパティで設定できます。
WeightedResponseTimeRule 各サーバーに重み値を割り当てます。サーバーの応答時間が長くなるほど、このサーバーの重みは小さくなります。このルールはサーバーをランダムに選択します。この重み値はサーバーの選択に影響します。
BestAvailableRule 短絡したサーバーを無視し、同時実行性の低いサーバーを選択する
RandomRule 利用可能なサーバーをランダムに選択
RetryRule 再試行メカニズムの選択ロジック

ランダム戦略の使用

負荷分散ルールは、次の 2 つの方法で IRule 実装を定義することによって変更できます。

  1. コードメソッド: 構成クラスで、新しい IRule(グローバル設定)を定義します。
@Bean
public IRule randomRule(){
    return new RandomRule();
}
  1. 設定ファイル方式: orderServer application.yml ファイルで、ルールを変更するための新しい設定を追加します。
userService: # マイクロサービスの負荷分散ルールを設定します。ここでは userservice サービスです
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 負荷分散ルール

遅延読み込み

Ribbon はデフォルトで遅延読み込みを使用します。つまり、初めてアクセスされたときにのみ LoadBalanceClient が作成され、要求時間が非常に長くなります。プロジェクトの開始時にハングリー読み込みが作成され、最初のアクセスの時間消費が短縮されます。ハングリー読み込みを有効にするには、次のように構成します。

ribbon:
  eager-load:
    enabled: true
    clients: userService # userService サービスのハングリーロードを指定します
This post is licensed under CC BY-NC-SA 4.0 by the author.
最終更新 2025-02-05 17:27 +0900

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。