効果
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:クライアントインターフェイステストを呼び出す