>백엔드 개발 >Golang >Google Pub/Sub\의 재시도 정책 매개변수는 `github.com/cenkalti/backoff` 라이브러리와 어떤 관련이 있나요?

Google Pub/Sub\의 재시도 정책 매개변수는 `github.com/cenkalti/backoff` 라이브러리와 어떤 관련이 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 08:04:30392검색

How Do Google Pub/Sub's Retry Policy Parameters Relate to the `github.com/cenkalti/backoff` Library?

Google Pub/Sub 재시도 정책: 지수 백오프 구성

Cloud Pub/Sub는 최근 구성을 허용하는 RetryPolicy 서버 측 기능을 도입했습니다. 메시지 전달 시도에 대한 지수 백오프. 제공된 설명서에서는 최소백오프(MinimumBackoff) 및 최대백오프(MaximumBackoff) 매개변수가 재시도 간의 초기 및 최대 대기 기간을 결정한다고 설명합니다. 그러나 이러한 매개변수와 github.com/cenkalti/backoff 라이브러리에 정의된 InitialInterval 및 MaxInterval 간의 관계는 여전히 불분명합니다.

github.com/cenkalti/backoff에서 사용되는 ExponentialBackOff 알고리즘은 무작위 재시도 간격을 정의합니다. as:

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초로 설정하고 MaximumBackoff를 60초로 설정하면 재시도 간격이 예상대로 최대 60초까지 늘어납니다.

MinimumBackoff와 MaximumBackoff를 각각 1초와 2초로 줄이면 재시도 빈도가 더 높아집니다. 약 3초의 일관된 지연. 이는 지수 백오프 알고리즘이 지정된 최대값 내에서 유지하기 위해 "최선의 노력"을 기울이고 있음을 나타냅니다.

Randomization, Multiplier 및 MaxElapsedTime

예제 출력은 그렇지 않습니다. 가시적 무작위화가 나타나며 명시적인 승수가 지정되지 않습니다. Pub/Sub의 지수 백오프 알고리즘은 github.com/cenkalti/backoff에 설명된 것과 유사한 공식을 사용합니다.

MaxElapsedTime과 관련하여 Cloud Pub/Sub에는 현재 동등한 개념이 없습니다. 그러나 배달 못한 편지 대기열을 사용하여 지정된 시도 횟수 이후 재시도를 중지함으로써 유사한 동작을 구현할 수 있습니다.

위 내용은 Google Pub/Sub\의 재시도 정책 매개변수는 `github.com/cenkalti/backoff` 라이브러리와 어떤 관련이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.