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?
是的。 MaximumBackoff 對應於初始等待時間,MaximumBackoff 對應於重試之間允許的最大時間量。這類似於 github.com/cenkalti/backoff 中的 InitialInterval 和 MaxInterval。
範例用法和觀察
提供的範例程式說明了指數退避行為。將MinimumBackoff 設定為 5 秒,將 MaximumBackoff 設定為 60 秒時,重試之間的時間會如預期增加,最大可達 60 秒。
將 MaximumBackoff 和 MaximumBackoff 分別減少到 1 秒和 2 秒,會導致更頻繁的重試持續延遲約 3 秒。這表明指數退避演算法正在盡最大努力保持在指定的最大值內。
隨機化、乘數和 MaxElapsedTime
範例輸出不表現出明顯的隨機化,且沒有指定明確的乘數。 Pub/Sub 中的指數退避演算法使用與 github.com/cenkalti/backoff 中描述的公式類似的公式。
關於 MaxElapsedTime,Cloud Pub/Sub 目前沒有等效的概念。但是,您可以透過使用死信佇列來實現類似的行為,以在指定的嘗試次數後停止重試。
以上是Google Pub/Sub 的重試策略參數與 `github.com/cenkalti/backoff` 函式庫有何關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!