8.11. Hystrix
概要 リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.18 から利用可能です。
Hystrix パターンにより、アプリケーションを Netflix Hystrix と統合することができます。これにより、Camel ルートでサーキットブレーカーを提供することができます。hystrix は、レイテンシーとフォールトトレランスのライブラリーで、以下の目的で設計されています
- リモートシステム、サービス、およびサードパーティーライブラリーへのアクセスポイントを分離
- 失敗の連鎖を止める
- 障害を避けられない複雑な分散システムでの耐障害性を実現
Maven を使用する場合は、Hystrix を使用するために以下の依存関係を pom.xml
ファイルに追加します。
Java DSL の例 リンクのコピーリンクがクリップボードにコピーされました!
以下は、インラインのフォールバックルートにフォールバックすることで、hystrix エンドポイントが遅い処理から保護されることを示すルートの例になります。デフォルトでは、タイムアウトリクエストは 1000ms
であるため、HTTP エンドポイントは素早く応答する必要があります。
XML 設定の例 リンクのコピーリンクがクリップボードにコピーされました!
以下は、XML を使用した場合の同じ例になります。
Hystrix フォールバック機能の使用 リンクのコピーリンクがクリップボードにコピーされました!
onFallback()
メソッドは、メッセージを変換したり、Bean などをフォールバックとして呼び出すことができるローカル処理用のものです。ネットワーク経由で外部サービスを呼び出す必要がある場合は、独自のスレッドプールを使用する独立した HystrixCommand
オブジェクトで実行される onFallbackViaNetwork()
メソッドを使用する必要があります。これにより、最初のコマンドオブジェクトを使い切ることはありません。
Hystrix の設定例 リンクのコピーリンクがクリップボードにコピーされました!
Hystrix には、次のセクションに記載されているように、多くのオプションがあります。以下の例は、実行タイムアウトをデフォルトの 1 秒ではなく 5 秒に設定し、サーキットブレーカーが 5 秒 (デフォルト) ではなく 10 秒待機してから、状態がオープンへ遷移したときにリクエストを再度試行する Java DSL を示しています。
以下は、XML を使用した場合の同じ例になります。
You can also configure Hystrix globally and then refer to that configuration. For example:
You can also configure Hystrix globally and then refer to that
configuration. For example:
オプション リンクのコピーリンクがクリップボードにコピーされました!
Ths Hystrix コンポーネントは以下のオプションをサポートします。Hystrix はデフォルト値を提供します。
名前 | デフォルト値 | タイプ | 説明 |
---|---|---|---|
|
| ブール値 | サーキットブレーカーを使用して健全性を追跡し、トリップした場合にはショートサーキットリクエストを使用するかどうかを決定します。 |
|
| Integer | サーキットがトリップしてオープンになり、フォールバックロジックへのショートサーキットリクエストが開始されるエラーの割合 (パーセント) を設定します。 |
|
| ブール値 | true の値を指定すると、強制的にサーキットブレーカーをクローズ状態にします。そのため、エラーの割合に関係なくリクエストは許可されます。 |
|
| ブール値 | true の値を設定すると、サーキットブレーカーはすべてのリクエストを拒否するオープン (トリップ) 状態になります。 |
|
| Integer | サーキットをトリップさせるローリングウィンドウの最小リクエスト数を設定します。 |
|
| Integer | サーキットがトリップした後、リクエストを拒否する時間を設定します。この時間が経過すると、サーキットを再度クローズするかどうかを判断するためのリクエストが試行されます。 |
| Node ID | String | Hystrix コマンドを識別します。このオプションは設定できません。コマンドを一意にするのは常にノード ID です。 |
|
| Integer |
コアスレッドプールのサイズを設定します。これは、同時実行可能な |
|
| Integer |
|
|
| String |
|
|
| ブール値 |
タイムアウトの発生時に |
|
| Integer | 実行完了までのタイムアウトをミリ秒単位で設定します。 |
|
| ブール値 |
|
|
| ブール値 |
失敗または拒否が発生した場合に |
|
| Integer |
|
|
| String | 統計情報とサーキットブレーカー のプロパティーを関連付けるために使用される Hystrix グループを識別します。 |
|
| Integer | keep-alive 時間 (分単位) を設定します。 |
|
| Integer |
|
|
| Integer | Health Snapshot を取得できるようにする間隔 (ミリ秒単位) を設定します。Health Snapshot は、成功とエラーの割合を算出し、サーキットブレーカーのステータスに影響を与えます。 |
|
| Integer | バケットごとに保持される実行回数の最大値を設定します。時間内により多くの実行が発生した場合はラップされ、バケットの先頭から上書きを開始します。 |
|
| ブール値 | 実行レイテンシーを追跡するかどうかを示します。レイテンシーはパーセント値として計算されます。false を指定すると、サマリー統計 (平均値、パーセント) が -1 として返されます。 |
|
| Integer |
|
|
| Integer | パーセント計算をするために実行時間が保持されるローリングウィンドウの期間 (ミリ秒単位) を設定します。 |
|
| Integer | ローリング統計ウィンドウを分割するバケット数を設定します。 |
|
| Integer |
このオプションと以下のオプションは、 |
|
| Integer |
拒否するためのしきい値をキューへ設定します。 |
|
| ブール値 |
|
|
| String | このコマンドを実行するスレッドプールを定義します。デフォルトでは、グループキーと同じキーを使用します。 |
|
| Integer | ローリング統計ウィンドウを分割するバケット数を設定します。 |
|
| Integer | 統計ローリングウィンドウの期間をミリ秒単位で設定します。スレッドプール用にメトリクスが保持される期間です。 |