Google Pub/Sub 再試行ポリシー: 指数バックオフ構成
Cloud Pub/Sub は最近、構成を可能にする RetryPolicy サーバー側機能を導入しました。メッセージ配信試行に対する指数関数的バックオフ。提供されているドキュメントでは、MinimumBackoff パラメーターと MaximumBackoff パラメーターによって再試行間の初期待機期間と最大待機期間が決定されることが説明されています。ただし、これらのパラメータと、github.com/cenkalti/backoff ライブラリで定義されている InitialInterval および MaxInterval との関係はまだ不明です。
github.com/cenkalti/backoff で使用される ExponentialBackOff アルゴリズムは、ランダム化された再試行間隔を定義します。例:
randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
ここで、RetryInterval は InitialInterval で開始され、MaxInterval によって制限されます。
MinimumBackoff と MaximumBackoff は InitialInterval と MaxInterval にマップされますか?
はい。 MinimumBackoff は最初の待機期間に対応し、 MaximumBackoff は再試行間に許可される最大時間に対応します。これは、github.com/cenkalti/backoff の InitialInterval と MaxInterval に似ています。
使用例と観察
提供されたサンプル プログラムは、指数バックオフの動作を示しています。 MinimumBackoff を 5 秒に設定し、MinimumBackoff を 60 秒に設定すると、再試行間の時間が予想どおり増加し、最大 60 秒になります。
MinimumBackoff と MaximumBackoff をそれぞれ 1 秒と 2 秒に減らすと、再試行の頻度が高くなります。一貫して約 3 秒の遅延。これは、指数バックオフ アルゴリズムが、指定された最大値内に収まるように「ベスト エフォート」を行っていることを示しています。
ランダム化、乗数、および MaxElapsedTime
出力例では、目に見えるランダム化が見られ、明示的な乗数は指定されていません。 Pub/Sub の指数バックオフ アルゴリズムは、github.com/cenkalti/backoff で説明されているものと同様の式を使用します。
MaxElapsedTime に関しては、Cloud Pub/Sub には現在同等の概念がありません。ただし、デッドレター キューを使用して、指定した回数の試行後に再試行を停止することで、同様の動作を実装できます。
以上がGoogle Pub/Sub の再試行ポリシー パラメータは「github.com/cenkalti/backoff」ライブラリとどのように関連していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。