[ソースコードコメント]リボンの負荷分散戦略とカスタム構成および

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:自定义额配置类

5.リボンのデフォルト戦略RoundRobinRuleソースコードコメント

おすすめ

転載: blog.csdn.net/single_0910/article/details/112686419