問題タブ [circuit-breaker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
581 参照

c# - オブジェクトがロックされていない場合、Monitor.TryEnter は false を返します

サービスにサーキット ブレーカーを実装しています。すべてのアクションをタイムアウトでラップするという事実を除いて、これは非常に標準的なサーキット ブレーカーです。そのため、タイムアウトが多すぎるとサーキットも中断します。サーキット ブレーカーがハーフ オープン状態になると、MonitorTryEnterメソッドを使用して、1 つのスレッドのみがアクションを実行するようにします (サービスが回復したかどうかを確認するため)。以下のスニペットを見つけてください (これはハーフオープン状態で実行されるコードです):

EDIT(機能コード全体を貼り付け)

上記のスニペットでわかるように、TryEnter は Try/Finally でラップされているため、何があってもロックが解放されます。私が抱えている問題は、ある時点Monitor.TryEnterですべての試行に対して false を返し始めることです。コードをデバッグしたところ、発生する前にすべてのMonitor.TryEnter呼び出しでMonitor.Exitが実行されることがわかりました。つまり、ロックを解除する必要がありますが、この時点ではすべての呼び出しが false を返すわけではないようです。これがどのように可能かはわかりません。

何らかの理由でロックが解除されない可能性はMonitor.Exitありますか (ただし、例外はスローされません)。それとも、私はここで何か間違ったことをしていますか?

編集。これが _halfOpenSyncObject の宣言方法です (このクラスのインスタンスは 1 つだけです)。

HalfOpen 実装の編集:

0 投票する
1 に答える
3828 参照

project-reactor - resilience4j Spring webflux アプリケーションでサーキット ブレーカーを使用するときにエラーを処理する方法

現在、回路が開くと、接続は応答なしで開いたままになります。

サーバーを停止すると、ブラウザーに次のように表示されます。

次の方法を知りたいです。

1) ハングした接続の問題を解決します。

2) フォールバックとして何かを返します。たとえば、空の Flux です。

ログ:

回線が開いているときの一連の呼び出し、最後の呼び出しは永久に待機します。

0 投票する
1 に答える
169 参照

spring-cloud-netflix - 既存のリクエストの実行を停止して、hystrix でフォールバック メソッドを停止して実行する方法

hystrix では、execution.isolation.thread.timeoutInMillisecondsこの構成を使用して特定の時間に応答を制限していますが、それ以外の場合はフォールバック メソッドを使用していますが、この設定はバックエンドで呼び出された要求も実行しています。それも停止することはできますか?