問題タブ [netflix-ribbon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - SpringClientFactory AppContext のスコープ Bean をリクエストする
SpringClientFactory
カスタム でリボン クライアントを作成するためにを使用していますcom.netflix.niws.client.http.RestClient
。これRestClient
は、@Bean
リクエスト スコープ (つまり@Scope("request")
) である と結び付けられます。これはすべて、Brixton リリース トレインの一部として行われます。
これSpringClientFactory
にはApplicationContext
、特定の に対して独自にインスタンス化する がname
あり、このコンテキストにはスコープが登録されていません。
を拡張する回避策がありますSpringClientFactory
が、少しぎこちなく感じられ、利用可能な の型に関する仮定を行いBeanFactory
ます。
内で代替 Bean スコープ (リクエスト、セッション、グローバルセッション) を使用しようとした人はいSpringClientFactory
ますか?
これは、Spring Cloud のメンテナーに向けられたものです。スコープが親コンテキストから 内で作成されたものに伝播されないという意識的な理由はありNamedContextFactory
ますか? ただの見落としになりそうです。
spring - ネストされたコンテキスト エンドポイントを呼び出す @LoadBalanced RestTemplate
以下のガイド ページは素晴らしく、スプリング ブーツ アプリケーションのリボンのベース ケースとして機能します。
https://spring.io/guides/gs/client-side-load-balancing/
この例は、エンドポイント マッピングがネストされるとすぐに機能しなくなります。
@RequestMapping(値 = "/ようこそ")
クラスレベルで
そして、クライアントの @LoadBalanced RestTemplate 呼び出しを
に
http://localhost:8090/welcome/greetingに直接アクセスしても問題なく動作しますが、接続されたスタックトレースで呼び出しが失敗します。domain.com/x/y/z/p/q などの長くネストされた URL エンドポイントへの要求を負荷分散するようにリボンを構成する適切な方法は何ですか?
スタックトレース:
load-balancing - Spring Cloud Consul + 複数のデータセンターにまたがるリボン?
現在、Spring Cloud Consul をサービス検出に使用しており、リボンを使用してサービス呼び出しの負荷を分散したいと考えています。(RestTemplate を使用して) 同じ DC 内のサービスのすべてのインスタンス間で正常に負荷分散することができましたが、それらのサービスが登録解除されたときに、別の DC でそのサービスのインスタンスが表示されることはありませんでした。Consul の観点から見ると、両方のデータ センターは WAN-Gossip を使用して適切に接続されています。他のデータセンター/ゾーンを「見る」ために、Spring Cloud Consul で構成する必要があるものはありますか? 最終的な目標は、DC1 内のサービス全体で負荷分散を行い、DC1 ですべてのインスタンスがダウンしたときに DC2 で負荷分散に切り替えることです。
ありがとう!
spring-cloud-netflix - spring-cloud - リボンだけの Hystrix ストリーム
spring-boot-starter-actuator
リボン/Feign クライアントが使用されている Web アプリケーションでは、hystrix ストリーム/エンドポイントが有効になっていません。
HystrixCircuitBreakerConfiguration.HystrixWebConfiguration
条件が成立しても発動しません。
Feign/Ribbon の hystrix ストリームを有効にする方法は?
環境: Spring Boot 1.3.5.RELEASE、Spring Cloud Brixton.SR4
spring-boot - Netflix リボンと Hystrix タイムアウト
プロジェクトではSpringクラウドを使用しています。いくつかのマイクロ サービスがあり、それぞれに独自の .yml ファイルがあります。
以下のプロパティは zuul サーバーにのみあります
テスト 1:
アカウント サービス:
このサービスは、タイムアウトをテストするために呼び出しているものであり、ポート 8006 を使用して、zuul 経由で要求を呼び出しています。
上記のサービスは、Spring RestTemplate を使用して内部的に以下のサービスを呼び出します。Association Serviceに以下のように 5000ms のスリープ時間を追加してテストを開始し、Accounts Serviceにリクエスト(getAccounts 呼び出し) を行いました。
アソシエーション サービス:
以下は、 Association Serviceで得たエラーです。
以下は、アカウント サービスで発生したエラーです。
スリープ時間を 4500 にしておくと応答が返されますが、4800 以上の場合は上記の例外がスローされます。これはリボンのタイムアウトではなく、別の何かに関係していると思います。特定の時点以降の上記の例外の特定の理由。
テスト 2
次に、 Accounts Serviceで直接75000 ミリ秒のスリープ時間を維持しようとし、スリープ時間Association Serviceを削除しました。
この場合、「com.netflix.zuul.exception.ZuulException」という「例外」が発生しました。
そして、APIGateway(Zuul アプリケーション) ログに以下のエラーが表示されます。
これは、Ribbon ConnectTimeout や ReadTimeout とは関係がないと思います。このエラーは、プロパティ"execution.isolation.thread.timeoutInMilliseconds: 60000"が原因です。また、動作をテストするためにこのプロパティを 10000 ミリ秒に減らしましたが、スリープ時間がそれ以上の場合 (例: 12000)、同じ例外が発生しました。
リボンの ConnectTimeout と Read-timeout と Hystrix のタイムアウト、およびアプリケーションでリボンのタイムアウトをテストする方法を理解したいです。また、マイクロサービスごとに異なるタイムアウトが必要な場合は、これらのプロパティをそれぞれの .yml ファイルに保持しますか? 何かご意見は?
開発者が Spring クラウドでこれらのタイムアウト オプションがどのように機能するかを簡単に理解できるように、チームで使用するドキュメントを作成しようとしています。
(説明が長くなりましたが、わかりやすくするために詳しく書きました)