Exponential Backoff dalam RetryPolicies
Ciri mundur eksponen yang diperkenalkan dalam Google Pub/Sub's RetryPolicy mencerminkan konsep yang diterangkan dalam ExponentialBackOff yang ditakrifkan oleh github. com/cenkalti/backoff yang anda nyatakan.
Minimum dan Maximum Backoff
Ya, anda betul. Parameter MinimumBackoff dan MaximumBackoff dalam pubsub.RetryPolicy sepadan dengan InitialInterval dan MaxInterval dalam github.com/cenkalti/backoff, masing-masing:
Randomization
Cloud Pub/Sub menggunakan formula yang sama untuk merawak selang seperti github.com /cenkalti/backoff:
randomized interval = RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor])
RandomizationFactor ditetapkan kepada 0.15 secara lalai dalam pubsub.RetryPolicy.
Multiplier and MaxElapsedTime
Tidak seperti github .com/cenkalti/backoff, pubsub.RetryPolicy tidak mempunyai persamaan dengan Multiplier, yang menggandakan RetryInterval selepas setiap kegagalan. Sebaliknya, kelewatan percubaan semula Pub/Sub meningkat secara eksponen pada kadar tetap yang ditentukan oleh RandomizationFactor.
Selain itu, tiada MaxElapsedTime yang jelas dalam pubsub.RetryPolicy. Walau bagaimanapun, Pub/Sub melaksanakan mekanisme percubaan semula berasaskan rutin, di mana percubaan semula dihadkan dengan berkesan oleh jangka hayat rutin yang mengendalikan langganan.
Contoh
Percubaan anda menunjukkan gelagat mundur eksponen dengan tepat. Selang mundur yang lebih panjang (5s hingga 60s) menghasilkan percubaan semula yang kurang kerap, manakala selang yang lebih pendek (1s hingga 2s) menghasilkan percubaan semula yang lebih kerap. Varians dalam selang adalah disebabkan oleh faktor rawak.
Atas ialah kandungan terperinci Bagaimanakah Google Pub/Sub Melaksanakan Backoff Eksponen dalam RetryPolicies Berbanding dengan github.com/cenkalti/backoff?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!