Hystrix (ヒューズ)

サービス プロバイダーの応答が非常に遅い場合、プロバイダーが応答するかタイムアウトになるまで、コンシューマーからプロバイダーへの要求を待たなければなりません。 高負荷のシナリオでは、何もしないと、このような問題により、サービス コンシューマのリソースが枯渇し、システム全体が崩壊することさえあります (雪崩効果)。 Hystrix は、このような問題の発生を効果的に防止できます。 Hystrix は、Netflix によってオープン ソース化された遅延およびフォールト トレラントなライブラリであり、リモート システム、サービス、またはサードパーティ ライブラリへのアクセスを分離し、カスケード障害を防止し、システムの可用性とフォールト トレランスを向上させるために使用されます。 Hystrix は主に、次のポイントを通じてレイテンシとフォールト トレランスを実現します。

(a) ラップ要求: HystrixCommand (または HystrixObservableCommand) を使用して依存関係の呼び出しロジックをラップし、各コマンドは独立したスレッドで実行されます。 これは、デザイン パターンの「コマンド パターン」を使用します。

(b) トリップ メカニズム: サービスのエラー率が特定のしきい値を超えると、Hystrix は自動または手動でトリップし、サービスの要求を一定期間停止することができます。

(c) リソースの分離: Hystrix は、依存関係ごとに小さなスレッド プール (またはセマフォ) を維持します。 スレッド プールがいっぱいの場合、依存関係に送信された要求は、キューで待機する代わりにすぐに拒否されるため、障害の判定が高速化されます。

(d) 監視: Hystrix は、成功、失敗、タイムアウト、拒否された要求など、実行中のインジケーターと構成の変更をほぼリアルタイムで監視できます。

(e) フォールバック メカニズム: 要求が失敗した場合、タイムアウトした場合、拒否された場合、またはサーキット ブレーカーが開いた場合に、フォールバック ロジックを実行します。 フォールバック ロジックは、開発者が指定できます。

Last updated