問題タブ [hystrix]
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-boot - 追加の Hystrix メトリック アグリゲーションをタービンに追加する方法
私のセットアップは、netflix ライブラリを使用したスプリング ブート クラウドで、Turbine が 1 つのサービスから Hystrix メトリックを集約することができました。ただし、サービスを追加すると、それらが表示されません。
これは私のセットアップです (これも github にアップロードしました: Project On Github
サービス 1:
フライト統合サービス:
サービス 2:
クーポンサービス:
Eureka アプリ サービス:
アプリケーション.yaml:
ブートストラップ.yaml
そして最後にタービンサービス:
アプリケーション.yaml:
私は何を間違っていますか?両方のサービス hystrix メトリック (フライト統合サービス、クーポン サービス) を実際に集計できない理由 ありがとうございます。
jdbc - Hystrix は既存の JDBC/HTTP 接続プールを置き換える必要がありますか、それとも委任する必要がありますか?
多くのアプリケーションは、回復力のために HTTP 呼び出しと JDBC 呼び出しの両方に接続プールを使用します。ただし、これら 2 種類のプールの使用と構成は大きく異なります。これにより、タイムアウト、再試行、キャッシング/アラート フォールバック、サーキット ブレーカー、監視など、両方に共通する回復力パターンを実装する複雑さが倍増します。
私の考えでは、 Hystrixは、HTTP 呼び出しと JDBC 呼び出しの両方に対して、これらと同じ回復力パターンを構成および実装するための共通のアプローチを提供します。
私の質問は次のとおりです。
- Hystrix は、理論的に既存の HTTP および JDBC 接続プールを完全に置き換えることができますか?
- もしそうなら、そうすることの長所と短所は何ですか?
それらを完全に置き換えると、これらの接続プールを取り巻く複雑さの世界が軽減されます-付随するタイムアウトや検証クエリプロパティなど.これらのタスクに特化した既存のライブラリに委譲します。
コンテキストとして、JDBC 接続プールに Tomcat DBCP を使用し、HTTP 接続プールに Apache HttpClient を使用する DropWizard アプリがあります。
hystrix - タイムアウト時にクリーンアップが必要な Hystrix コマンド
タイムアウト時にクリーンアップが必要な Hystrix コマンドがあります。これを処理するための現在のアプローチは次のとおりです。
Hystrix フレームワークはそのための別の方法を提供しますか?
spring - Spring Cloud Netflix の使用時に Hystrix プロパティをオーバーライドする
Spring Cloud ライブラリを介して Netflix Hystrix を使用する Spring Boot アプリケーションを使用していますが、すべて正常に動作しています。
hystrix.threadpool.default.coreSize
やなど、Hystrix のいくつかの基本的なプロパティをオーバーライドしたいと考えていますhystrix.threadpool.default.maxQueueSize
。残念ながら、これを行うためのすぐに使える Spring Boot プロパティを見つけることができなかったので、アプリケーションの起動時にこれらのプロパティを設定するにはどうすればよいでしょうか?
これらのプロパティは spring-cloud-starter-hystrix モジュールでどのように設定されていますか?
promise - Hystrix: getFallBack() でネットワーク呼び出しを行う
私は Netflix OSS Hystrix をいじっており、現在、プロジェクトに含めるさまざまな構成と可能性を探っています。とりわけ、私のアプリケーションはネットワーク呼び出しを行う必要がありますHystrixCommand.getFallBack()
...
ここで、そこでネットワーク呼び出しを行わず、代わりに一般的な回答を提供するのがベスト プラクティスであることを読みました ( Hystrix Wikiを参照)。本当にこれを行う必要がある場合は、HystrixCommand
またはを使用する必要がありますHystrixObservableCommand
。
私の質問は、使用する場合、またはその他のオプションを使用してHystrixCommand
呼び出す必要があるかどうかです。HystrixCommand.run()
HysrixCommand.queue()
また、私のログでは、getFallBack()
異なる呼び出しスレッドを持つことができることに気付きました (たとえば、Hystrix-Timer、これは実行メソッドを中断した人に依存すると思います)。ここで、フォールバックからのシェル呼び出しがパフォーマンスにどのようにHystrixCommand.run()
影響するかを知りたいのですが、呼び出し元のスレッドは生きていて、そのコマンドが終了するまでブロックされますか?
編集:問題に新鮮な目で、私は今、「一般的な答え」(上記)が何らかの形、Promise
つまりCompletableFuture<T>
Java用語である可能性があると考えています。したがって、 から promise を返すHystrixCommand.run()
と、呼び出し元のスレッド (Hystrix 内部) がすぐに戻ることができるため、スレッドが解放されます。しかし今、私はこの動作の実装にこだわっています。何か案は?
助けてくれてありがとう!
jersey - Hystrix ダッシュボードは Jersey エンドポイントでは使用できません
私は、Jersey/JAX-RS アノテーションで実装されたパブリック エンドポイントを持つ Spring Boot アプリケーションを持っています。Hystrix ダッシュボードは @EnableHystrixDashboard で有効になり、HystrixMetricsStreamServlet は「/hystrix.stream」の下に登録されます (例にあるように)。
.../hystrix.stream にアクセスすると、HystrixCommands でメトリクス データを使用できますが、スターター ダッシュボード ページ "/hystrix" は空で、HTTP 404 ステータス コードが表示されます。
Jerseyでアクセスできない理由は何ですか?
Spring WebMVC (Jersey ではない) で同じことが実装されている場合、ダッシュボード ページが利用可能です。
私のpom.xml
- spring-webmvc を除外し、ジャージーに依存します
- hystrix、イベントストリーム、ダッシュボード、アクチュエータに依存
-
spring-cloud - hystrix サーキット ブレーカーを回避するために、eureka ill サービス アプリケーション インスタンスのみを取り出す方法は?
私は自分のローカル マシンでspring-cloud-samplesを試しており、eureka と hystrix をサポートするシンプルな REST サービスを開発しました。
Feign クライアントへの参照を含む hystrix コマンド メソッド (@HystrixCommand 注釈付きメソッド) を介してサービスに接続するフロントエンド アプリケーションがあります。
クライアントを装う
Hystrix ラッパー
Spring MVC ProductService の 2 つのインスタンスを開始しました。最初のものは、期待どおり、指定された識別子に基づいて製品情報を提供します。一方、2 番目のものは、システムの依存関係の失敗をシミュレートするために、常に RuntimeException をスローします。
フロントエンド側では、hystrix クライアントを使用して製品情報を取得し、ProductService インスタンスが (リボンにより) ラウンド ロビン方式で呼び出されます。ProductService インスタンスの 1 つが常に例外を配信するという事実により、フロントエンドで複数の連続した呼び出しを行った後、ProductService 回路が開かれます (ProductService のインスタンスの 1 つが要求を正常に処理できる場合でも)。
ProductService の hystrix サーキット ブレークを回避するために、問題のある ProductService インスタンスのみを eureka から削除し、それらを正しく機能させ続けるにはどうすればよいですか? ProductService のヘルス インジケーター リソース "/health" の機能を変更して、システム依存関係のエラーを追加でチェックする必要があると思います。
カスタムヘルスチェックを実行できるspring-boot-starter- actuator の使用に遭遇しましたが、これは eureka からサービスインスタンスを取り出すのに役立たないようです。
spring-cloud - hystrix コマンドからのエラーをログに記録する
@HystrixCommand アノテーションを使用すると、メソッドが失敗した場合に実行するフォールバック メソッドを構成できます。
@HystrixCommand で注釈が付けられたすべてのメソッドでスローされたランタイム例外を (中央クラスで) ログに記録するにはどうすればよいですか?
バニラ hystrix-javanica ではなく、spring-cloud-netflix を使用しています。アプリケーションに実装する必要がある org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler クラス (Spring の @Async 用) に似たものを探しています。
hystrix-core では、HystrixCommand クラスにメソッドgetFailedExecutionException()があり、例外をログに記録するためのフォールバック メソッド内で使用できます。hystrix-javanica を使用しているときにこの例外を取得する方法を教えてもらえますか?
java - JMX を介して Hystrix のサーキット ブレーカーの状態を公開する方法
Hystrix のサーキット ブレーカーの状態を JMX で公開する方法に関するチュートリアルを探していました。を使用してメトリック (カウンター、ゲージなど) を公開するための API を見つけましたhystrix-servo-metrics-publisher
。
JMX でサーキット ブレーカーの状態を公開することは可能ですか?