序文
springcloudを使用する場合は、必然的にHystrixを使用します。属性の構成について書き留めておきましょう。
構成
主に次のタイプの属性構成があります。
構成接頭辞はhystrix.command.defaultです。
実行構成:
-
execution.isolation.strategy:この属性は、実行分離戦略を設定するために使用されます。次の2つのオプションがあります。
- THREAD:スレッドプール分離戦略を通じて、別のスレッドで実行します。その同時実行制限は、スレッドプール内のスレッド数によって制限されます(デフォルト)。
- SEMAPHONE:セマフォ分離の戦略により、呼び出しスレッドで実行され、その同時実行制限はセマフォカウントによって制限されます。
- execution.isolation.thread.timeoutInMilliseconds:このプロパティは、HystrixCommand実行のタイムアウト時間を構成するために使用されます。単位はミリ秒、デフォルト値は1000です。この時間構成を超えると、HystrixはコマンドをTIMEOUTとして実行し、サービス低下処理ロジックに入ります
- execution.timeout.enabled:このプロパティは、HystrixCommand実行がタイムアウトを開始するかどうかを構成するために使用されます。デフォルト値はtrueです。falseに設定されている場合、execution.isolation.thread.timeoutInMillisecondsプロパティの構成は機能しません
- execution.isolation.thread.interruptOnTimeout:このプロパティは、HystrixCommandの実行がタイムアウトしたときにHystrixCommandを中断する必要があるかどうかを構成するために使用されます。デフォルト値はtrueです。
- execution.isolation.semaphore.maxConcurrentRequests:分離戦略でセマフォを使用する場合、このプロパティを使用してセマフォのサイズを構成します。同時リクエストの最大数が設定値に達すると、後続のリクエストは拒否されます
fallback配置:
- fallback.enabled:このプロパティは、サービス低下ポリシーが有効かどうかを設定するために使用されます。デフォルト値はtrueです。falseに設定されている場合、リクエストが失敗するか拒否が発生すると、HystrixCommand.getFallback()は呼び出されず、サービス低下ロジックが実行されます
circuitBreakerの設定:
- circuitBreaker.enabled:この属性は、サーキットブレーカーを使用してサービスインジケーターを追跡し、サービスリクエストコマンドが失敗したときにリクエストを融合するかどうかを決定するために使用されます。デフォルト値はtrueです。
- circuitBreaker.requestVolumeThreshold:この属性は、ローリング時間ウィンドウ内の回路ブレーカー要求の最小数を設定するために使用されます。たとえば、デフォルト値が20の場合、ローリングタイムウィンドウ(デフォルト値は10秒)内に19リクエストしか受信されない場合、19リクエストすべてが失敗しても、回路ブレーカーは開きません。
- circuitBreaker.sleepWindowInMilliseconds:このプロパティは、回路ブレーカーが開いた後のスリープ時間ウィンドウを設定するために使用されます。デフォルト値は5000ミリ秒です。スリープ時間ウィンドウが終了すると、回路ブレーカーは「ハーフオープン」状態に設定され、溶断の要求コマンドが試行されます。それでも失敗する場合、回路ブレーカーは引き続き「オープン」状態に設定され、成功した場合は、無効。
- circuitBreaker.errorThresholdPercentage:この属性は、回路ブレーカーを開くためのエラー率の条件を設定するために使用されます。たとえば、デフォルト値が50の場合、ローリングタイムウィンドウで、リクエストの数がcircuitBreaker.requestVolumeThresholdのしきい値を超えた場合、エラーリクエストの数の割合が50を超えると、サーキットブレーカーは「オープン」状態に設定されます。 「オフ」状態に設定します。
- circuitBreaker.forceOpen:この属性は、サーキットブレーカーを強制的に「オープン」状態に設定するために使用され、すべての要求は拒否されます。この属性は、circuitBreaker.forceClosedよりも優先されます。
- circuitBreaker.forceClosed:この属性は、サーキットブレーカーを強制的に「クローズ」状態に設定するために使用され、すべての要求が受信されます。
メトリック構成:
この構成プロパティは、HystrixCommandおよびHystrixObservableCommandの実行中のインジケーター情報のキャプチャに関連しています。
- metrics.rollingStats.timeInMilliseconds:この属性は、ローリングタイムウィンドウの長さをミリ秒単位で設定するために使用されます。この時間は、サーキットブレーカーが正常性を判断したときに収集される情報の期間に使用されます。デフォルト値は10000です。サーキットブレーカーの値がインジケーター情報を収集すると、設定された時間ウィンドウの長さに応じて複数の「バケット」に分割され、さまざまなメトリック値が累積されます。各「バケット」は、収集されたインジケーターを一定期間記録します。
-
metrics.rollingStats.numBuckets:この属性は、ローリングタイムウィンドウの統計インジケーター情報の「バケット」の数を設定するために使用されます。デフォルト値は10です。metrics.rollingStats.timeInMillisecondsパラメーターの設定は、このパラメーターで割り切れる必要があります。そうしないと、例外がスローされます。
metrics.rollingPercentile.enabled:この属性は、パーセンタイルを使用してコマンド実行の遅延を追跡および計算するかどうかを設定するために使用されます。デフォルト値はtrueです。falseに設定されている場合、すべての要約統計は-1を返します
- metrics.rollingPercentile.timeInMilliseconds:この属性は、パーセンタイル統計のローリングウィンドウの期間を設定するために使用されます。単位:ミリ秒、デフォルト値は60000です。
- metrics.rollingPercentile.numBuckets:この属性は、パーセンタイル統計ウィンドウで使用される「バケット」の数を設定するために使用されます。デフォルト値は6です
- metrics.rollingPercentile.bucketSize:この属性は、実行プロセス中に各「バケット」に保持される実行の最大数を設定するために使用されます。ローリング時間ウィンドウで設定値を超える実行数が発生した場合は、初期位置から再開しますたとえば、100に設定すると、ローリングウィンドウは10秒になり、10秒以内に「バケット」で500の実行が発生すると、最後の100実行の統計のみが「バケット」に保持されます。デフォルト値は100です。
- metrics.healthSnapshot.intervalInMilliseconds:この属性は、サーキットブレーカーの状態に影響を与えるヘルススナップショット(リクエストされた成功率とエラー率)を収集するための間隔待機時間を設定するために使用されます。デフォルト値は500です。
requestContext設定:
- requestCache.enabled:この属性は、リクエストのキャッシュを有効にするかどうかを構成するために使用されます
- requestLog.enabledg:この属性は、HystrixCommandおよびイベントの実行をHystrixRequestLogに出力するかどうかを設定するために使用されます。デフォルト値はtrueです
構成接頭辞はhystrix.collapser.defaultです。
- maxRequestsInBatch:この属性は、1つの要求マージバッチで許可される要求の最大数を設定するために使用されます。デフォルト値はInteger.MAX_VALUEです。
- timerDelayInMilliseconds:この属性は、バッチプロセスの各コマンドの遅延時間をミリ秒単位で設定するために使用されます。デフォルト値は10です。
- requestCache.enabled:この属性は、バッチ処理中にリクエストのキャッシュを有効にするかどうかを設定するために使用されます。デフォルト値はtrueです
構成接頭辞はhystrix.threadpool.defaultです。
- coreSize:この属性は、コマンドスレッドプールのコアスレッドの数を設定するために使用されます。この値は、最大同時コマンド実行数です。デフォルト値は10です。
- maxQueueSize:この属性は、スレッドプールの最大キューサイズを設定するために使用されます。-1に設定すると、スレッドプールはSynchronousQueueによって実装されたキューを使用します。それ以外の場合、LinkedBlockingQueueによって実装されたキューを使用します。デフォルト値は-1です。
- queueSizeRejectionThreshold:この属性は、キューの拒否しきい値を設定するために使用されます。キューが最大値に達していなくても、要求を拒否できます。この属性は、主にLinkedBlockingQueueキューの補足です。デフォルト値は5です。maxQueueSize属性が-1の場合、この属性は無効です
- metrics.rollingPercentile.timeInMilliseconds:この属性は、スレッドプール統計のローリングウィンドウの期間を設定するために使用されます。単位:ミリ秒、デフォルト値は10000です。
- metrics.rollingPercentile.numBuckets:この属性は、スレッドプール統計ウィンドウで使用される「バケット」の数を設定するために使用されます。デフォルト値は10です。
(終了)