[解決済み] Hystrixが採用しているBulkhead Patternとは何ですか?
質問
複雑な分散システムにおけるレイテンシとフォールトトレランスのためのNetflixのAPIであるHystrixは、以下のものを使用しています。 バルクヘッドパターン テクニックを使用しています。どなたか詳しく教えてください。
どのように解決するのですか?
一般的な
一般に、バルクヘッドパターンの目標は、システムの一部分の欠陥がシステム全体を破壊することを避けることです。この用語は、1 つの船体の破損で船全体が浸水するのを避けるために、船を個別の水密区画に分割したことに由来しています (浸水するのは 1 つの隔壁だけです)。
バルクヘッドパターンの実装は、どのような種類の故障からシステムを保護したいかによって、多くの形態をとることができます。この回答では、Hystrixが処理する障害の種類についてのみ説明します。
バルクヘッドパターンが一般化したのは Release It! by Michael T. Nygardによって広まったと思います。
Hystrixが解決すること
Hystrixのバルクヘッド実装 は、コンポーネントへの同時呼び出しの数を制限しています。 . この方法では、コンポーネントからの応答を待っているリソース(通常はスレッド)の数が制限されます。
リクエストベースのマルチスレッドアプリケーション(例えば典型的なウェブアプリケーション)で、3つの異なるコンポーネントを使用すると仮定します。 A , B であり、かつ C . コンポーネントへのリクエストが C へのリクエストがハングアップし始めると、最終的にはすべてのリクエスト処理スレッドが C . これはアプリケーションを完全に無応答にするでしょう。もし C へのリクエストがゆっくり処理される場合、負荷が十分に高ければ同じような問題が発生します。
Hystrix のバルクヘッドパターンの実装は、コンポーネントへの同時呼び出しの数を制限し、このケースでアプリケーションを保存したことでしょう。30 のリクエスト処理スレッドがあり、への同時呼び出しが 10 に制限されていると仮定します。 C . を呼び出すとき、最大で 10 個のリクエストハンドリングスレッドがハングアップする可能性があります。 C を呼び出したときにハングします。 残りの 20 個のスレッドはまだリクエストを処理でき、 コンポーネントの A と B .
ヒストリカルのアプローチ
Hystrix'はバルクヘッドに対して、スレッドアイソレーションとセマフォアイソレーションの2つの異なるアプローチを持っています。
スレッド隔離
標準的なアプローチは、すべてのリクエストをコンポーネント C へのすべてのリクエストを、固定数のスレッドとリクエストキューを持たない (あるいは少ない) 独立したスレッドプールに渡すことです。
セマフォの分離
もう一つの方法は、すべての呼び出し元が、(0 タイムアウトで) permit を獲得してから C . セマフォからパーミットを取得できない場合は C の呼び出しは通されません。
相違点
スレッドプールアプローチの利点は、スレッドプールに渡されたリクエストは C に渡されるリクエストをタイムアウトさせることができることです。これはセマフォを使うときには不可能なことです。
関連
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] Inversion of Controlとは?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み】クラスの命名 - すべてを"<WhatEver>Manager "と呼ぶのを避けるには?[クローズド]
-
[解決済み】C++ シングルトンデザインパターン
-
[解決済み】FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[クローズド]
-
[解決済み】ファサードデザインパターンとは何ですか?
-
[解決済み】REST APIのログインパターン
-
[解決済み] Facade、Proxy、Adapter、Decoratorのデザインパターンの違い?
-
[解決済み] デザインパターン 抽象ファクトリーとファクトリーメソッド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シングルトン・パターンの欠点やデメリットは何ですか?[クローズド]
-
[解決済み] デザインパターンについて。シングルトンはいつ使うべきですか?
-
[解決済み】FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[クローズド]
-
[解決済み】アンチパターンとは何ですか?
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] KotlinでBuilderパターンを実装するには?
-
[解決済み] シェルスクリプトのデザインパターンやベストプラクティス [終了しました]。
-
[解決済み] クロスカットの懸念事項の例
-
[解決済み] ブリッジパターンとストラテジーパターンの違いは何ですか?
-
[解決済み] Undoエンジンのデザインパターン