首頁  >  文章  >  後端開發  >  Google Pub/Sub 的 RetryPolicy 參數與 ExponentialBackOff 函式庫的 InitialInterval 和 MaxInterval 有何關係?

Google Pub/Sub 的 RetryPolicy 參數與 ExponentialBackOff 函式庫的 InitialInterval 和 MaxInterval 有何關係?

DDD
DDD原創
2024-10-27 17:40:03655瀏覽

How do Google Pub/Sub's RetryPolicy Parameters Relate to the ExponentialBackOff Library's InitialInterval and MaxInterval?

Google Pub/Sub 的 RetryPolicy 中的指數退避

問題陳述

Google Pub/Sub 的 RetryPolicy 包括 MaximumBack off 參數。文件解釋說這些值用於離散時間的指數退避。但是,它沒有提供有關它們如何與經常使用的 ExponentialBackOff 庫中的 InitialInterval 和 MaxInterval 相關的詳細資訊。

退避機制

文件提供了退避計算的概覽,其中類似於ExponentialBackOff 函式庫所採用的方法:

randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
  • RetryInterval 是重試之間的當前延遲,它從MaximumBackoff 的值開始,並以MaximumBackoff 為上限。
  • RandomizationFactor 提供一系列圍繞重試間隔的隨機化。

範例中的觀察結果

提供的測試程序說明了不同的退避參數對訊息 nack 之間的實際延遲的影響。

  • 將MinimumBackoff和MaximumBackoff分別設定為5秒和60秒,nack之間的延遲逐漸增加,到第6次嘗試時達到1分鐘。這表示每次嘗試後將 RetryInterval 加倍。
  • 將 MaximumBackoff 和 MaximumBackoff 分別設定為 1 秒和 2 秒,nack 之間的延遲徘徊在 3 秒左右,表示延遲始終略高於 MaximumBackoff 值。

Multiplier 和 MaxElapsedTime

ExponentialBackOff 庫中定義的 Multiplier 和 MaxElapsedTime 參數在 Google Pub/Sub 的 RetryPolicy 中沒有直接等效項。

  • 文件中沒有提到 Multiplier,範例中也沒有建議延遲每次都加倍。
  • 沒有明確支援 MaxElapsedTime,但文件指出如果 MaximumBackoff 設定為 0,重試將無限期地繼續。

結論

Google Pub/Sub 的 RetryPolicy 中的 MaximumBackoff 和 MaximumBackoff 參數的行為與 ExponentialBackOff 庫中的 InitialInterval 和 MaxInterval 機制類似,採用隨機指數退避機制。但是,Google Pub/Sub 並未明確支援重試的乘數或最大運行時間。

以上是Google Pub/Sub 的 RetryPolicy 參數與 ExponentialBackOff 函式庫的 InitialInterval 和 MaxInterval 有何關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn