リボンロードバランシングの使用法と切り替えアルゴリズム

効果

  RestTemplateと組み合わせて使用​​されるクライアントロードバランシング

 

1:ポン

  eurekaクライアントとnocosクライアントのpom依存関係はリボンと統合されているため、依存関係を繰り返し追加する必要はありません

2:RestTemplateをSpringコンテナーに注入する

@Component 
@Configuration 
public  class AppConfiguration { @LoadBalanced   
    
    //负载均衡
    @Bean
     public RestTemplate restTemplate(){
         return  new RestTemplate(); 
    } 
}

   @LoadBalanced //ロードバランシングアノテーションマークはロードバランシングを使用します。マークされていない場合、次の原因が発生します。クライアントは複数のサービスインスタンスがあり、どのインスタンスを呼び出すかがわからない(デフォルトではポーリングアルゴリズムが使用されます)

 

3:RestTemplateの使用

    @Autowired
     プライベートRestTemplate restTemplate; 

    プライベート文字列url = " http:// CLOUD-PAYMENT-SERVICE " ; //正式环境from配置文件中读取


    @RequestMapping(" / get / {id} " public BaseResult findById(@PathVariable(" id " )Integer id){ 
        ResponseEntity <BaseResult> forEntity = restTemplate.getForEntity(url + " /支払/取得/ " + ID、BaseResult。クラス); 
        BaseResult body = forEntity.getBody();
        ボディを返す; 
    }

 

4:ロードルールを置き換える

  4.1負荷分散戦略

リボン
    負荷分散
    手順:
        ステップ1:選択eurekaServer、同じ面積負荷の少ないサーバーでの彼の好み
        ステップ2:サーバーからユーザーが指定したポリシーに従ってアドレスを登録されたサービスのリストを取得するには、選択
    :ポリシーのiRule RoundRobinRuleを 
            ポーリングWeighedResponseTimeRule 
            高速応答インスタンスの主要な選択する権利RandomRule 
            ランダムRetryRuleは、 
            最初の障害リトライ(再試行するかは、この買収の例を見つける、または別の??を見つける。)した後、RoundRobinRule戦略に従って調達をBestAvailableRuleの 
            多くの訪問アウトフィルタサーキットブレーカーが作動している状態のサービスの
            場合、サーバーのドメインのパフォーマンスとサーバーの可用性の判断を満たす、同時の小さなZoneAvoidanceRuleのデフォルトルールを選択します
        。応答時間に基づいて重み付けするサーバー選択します
    ロードルールを置き換えます。        注:カスタムリージョンは@ComponentScanに配置しないでください次に、それ以外の場合は、すべてのクライアント、springBootApplicationアノテーションで共有され、@ ComponentScanがデフォルトになります

        
        
        
        
        
        



      備考:eureka -clientは、リボンのデフォルトの統合に依存します

  4.2カスタム負荷分散

@Configuration
 public  class CloudRondowRule { 

    @Bean 
    public IRule iRule(){
         return  new RandomRule(); //ランダムルール
    } 
}

メインメソッドは、springcloudパッケージの下にあり、CloudRondowRuleルールはmyRuleパッケージの下に定義されているため、CloudRondowRuleはスキャンされません。

 

5:定義済みの負荷分散切り替えルールを使用するようにクライアントをマーク

 

@EnableEurekaClient 
@SpringBootApplication 
@ RibbonClient(名 = " クラウドPAYMENT-SERVICE "。、構成= CloudRondowRule クラス)  
 パブリック クラスOrderMain80 { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(OrderMain80。クラス)。
    } 
}

 

 

 

6:クライアントインターフェイステストを呼び出す

 

おすすめ

転載: www.cnblogs.com/draymond/p/12725899.html