xConnectのサーキット ブレーカーの構成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
サーキット ブレーカーの設計パターンは、誤動作しているサービスやアプリケーションが、未回答の要求の壊滅的なバックログを蓄積するのを防ぎます。サーキット ブレーカーが構成されている場合、サービスは現在使用不可であることを通知でき、サーキット ブレーカーはすべての要求に対して最新の既知のエラー メッセージで一時的に応答します。
サーキットブレーカーの概念は電気工学から来ています:電気回路では、openサーキットブレーカーが電気の流れを止めます。ブレーカーがclosedると、電気が自由に流れることができます。
ソフトウェア サーキット ブレーカーは、次の状態になります。
-
Closed - サービスが利用可能であり、期待どおりにリクエストに応答します。
-
Open - サービスが利用できず、サーキットブレーカーは各リクエストにエラーメッセージで応答します。
-
Half-open - サーキットブレーカーは、サービスが利用可能かどうかを確認するために、サービスへのリクエストを制限しています。
サーキットブレーカーを集合的または個別に構成するには、次のCircuitBreakerTypeを指定します。
|
CircuitBreakerType |
クライアント構成済み |
|---|---|
|
General |
Collection、Search、およびConfigurationクライアントをまとめて設定しますが、個々のクライアント サーキット ブレーカー設定によって上書きされます。 |
|
Collection |
CollectionWebApiClientのみを設定します。 |
|
Search |
SearchWebApiClientのみを設定します。 |
|
Configuration |
ConfigurationWebApiClientのみを設定します。 |
SitecoreはPolly Circuit Breakerライブラリを使用し、Sitecore.Xdb.Common.Web.CommonWebApiClient<TRoutes> クラスにPolly.IAsyncPolicy<HttpResponseMessage> タイプ フィールドを追加しました。これにより、Polly.IAsyncPolicyの実装であるPolly.CircuitBreakerクラスの依存関係の挿入を行うことができます。
サーキットブレーカーには、次の設定オプションがあります。
-
handledEventsAllowedBeforeBreaking- サーキット ブレーカーがオープン状態に移行するまでに許容されるサービス障害の最大数。
-
durationOfBreak- サーキット ブレーカーがオープン状態のままで、ハーフ オープン状態に移行する秒数。
サーキット ブレーカーには、次の状態変更ハンドラーがあります。
-
onBreak()- サーキットブレーカーがオープン状態に移行したときに呼び出されます。
-
onReset()- サーキットブレーカーが閉じた状態に移行したときに呼び出されます。
サーキットブレーカーは、次の方法で有効にできます。
-
パッチファイルによるCircuitBreakerInfos構成を、Content Management以外のロールからの要求に対して有効にします。
-
コンストラクター パラメーターによるCircuitBreakerファクトリを有効にすると 、よりカスタマイズ可能なソリューションが得られます。
-
パッチファイルによってCircuitBreakerファクトリを有効にすると 、よりカスタマイズ可能で柔軟なソリューションが得られます。
サーキットブレーカーを無効にするには、対応する設定セクションを削除またはコメントアウトするだけです。
パッチファイルによるCircuitBreaker構成の有効化
CircuitBreaker構成を使用して、Content ManagementロールからのxConnect要求を管理します。CircuitBreaker構成によってサーキット ブレーカーを有効にするためのカスタム コードを記述する必要はありませんが、状態変更ハンドラーを指定することもできません。
CircuitBreaker設定を作成するには:
-
Sitecoreインスタンスの <wwwroot>/App_Config/Include/ フォルダに移動します。
-
たとえば、CircuitBreakerCommon.configという名前のパッチ ファイルを作成し、次の内容を含めます。
-
パッチ・ファイルを保存します。
パッチファイルによるCircuitBreakerInfos構成の有効化
CircuitBreakerInfos構成を使用して、マーケティング オートメーションなどのContent Management以外のロールからのxConnectリクエストを管理します。CircuitBreakerInfos構成によってサーキット ブレーカーを有効にするためのカスタム コードを記述する必要はありませんが、状態変更ハンドラーを指定することもできません。
CircuitBreakerInfos設定を作成するには:
-
Sitecoreインスタンスの <wwwroot>/App_Config/Include/ フォルダに移動します。
-
たとえば、CircuitBreakerInfos.configという名前のパッチ ファイルを作成し、次の内容を含めます。
-
パッチ・ファイルを保存します。
コンストラクター パラメーターによるCircuitBreakerファクトリの有効化
コンストラクター パラメーターとして渡されたCircuitBreakerファクトリを使用して、カスタマイズされた要求処理と状態変更ハンドラーを作成します。
XConnectClientConfigurationConfiguratorコンストラクタは、IConfigurationインスタンスとオプションのCircuitBreakerファクトリをパラメータとして受け入れます。
-
IConfigurationインスタンスにはさまざまなパラメーターが含まれており、CircuitBreakerパラメーターを含めることもできます。
-
オプションのCircuitBreakerファクトリはSitecore.Reflection.IFactoryインターフェイスに基づいており、依存関係の挿入によって渡すこともできます。
IConfigurationインスタンスのみを渡す場合、XConnectClientConfigurationConfiguratorはIConfigurationインスタンスのCircuitBreakerパラメーターを使用します。
IConfigurationインスタンスをCircuitBreakerファクトリand渡す場合は、IConfigurationインスタンスのCircuitBreakerパラメータをXConnectClientConfigurationConfigurator ignoresし、CircuitBreakerファクトリのみを使用します。
コンストラクターパラメーターによるCircuitBreakerファクトリを有効にするには:
-
Visual Studioの任意のファイルに、次のように入力します。
-
ファクトリをコンパイル、テスト、およびデプロイします。
パッチファイルによるCircuitBreakerファクトリの有効化
パッチファイルによって設定されたCircuitBreakerファクトリを使用すると、ファクトリを再コンパイルせずに設定を変更できるため、柔軟性が向上します。
パッチファイルによるCircuitBreakerファクトリを有効にするには:
-
Visual Studioで、次の内容でTestCircuitBreakerInfoFactoryStub.csなどの名前の新しいクラス ファイルを作成します。
-
Sitecoreインスタンスの <wwwroot>/App_Config/Include/ フォルダに移動し、次の内容でTestCircuitBreakerInfoFactoryStub.configなどの名前のパッチ ファイルを作成します。
CircuitBreaker構成は、TestCircuitBreakerInfoFactoryStubファクトリによって作成されたCircuitBreakerCollectionサーキット ブレーカーがCollectionクライアントによって使用されることを宣言します。完全なサンプル サーキット ブレーカー構成に示されているように、常に構成の早い段階で工場を宣言してください。
-
ファクトリをコンパイル、テスト、およびデプロイします。
完全なサンプル・サーキット・ブレーカ構成
コンテキストをよりよく理解するために、このサンプル サーキット ブレーカー構成パッチ ファイルは、サーキット ブレーカーを構成するさまざまな方法を示しています。