Logo GH

Gaýtalama we backoff syýasatlary

Gaýtalamalar (retries) wagtlaýyn şowsuzlyklardan halas bolmaga kömek edýär, ýöne nädogry sazlanylanda traffigiň göçmegine, amallaryň goşa we kaskadly ýykylmagyna sebäp bolýar. Retraýlaryň ygtybarly syýasaty elmydama möhletlerden/wagtlardan başlaýar, dempotentligi göz öňünde tutýar we backoff + jitterleri ulanýar.

1) Esasy ýörelgeler

1. Ilki wagt/möhlet, soň bolsa retraý. Wagt çäksiz gaýtalamak diňe ret etmegi uzaldýar.
2. Retraý - diňe howpsuz/idempotent amallary üçin. Howpsuz däller üçin - idempotency-keys we geleşik kepillikleri arkaly.
3. Backoff hökmanydyr. Tolkunlary sinhronlaşdyrmak üçin eksponensial ýa-da GCRA-meňzeş jitter.
4. Synanyşyklaryň sanyny we umumy býudjet-wagty çäklendiriň. Ulanyjynyň SLO-syndan çykmaň.
5. Infrastruktura signallaryna hormat goýuň. '429/503' + 'Retry-After', circuit breaker ýagdaýy, nobatlaryň çäkleri.

2) Wagtlar we möhletler (deadline propagation)

Haýyşnamanyň wagty <SLO hyzmaty, möhleti zynjyryň aşagyna ýaýraýar (HTTP sözbaşylar/gRPC context).
Wagtyň düzümi: jemi (birinji synanyşyk + backoff + indiki) ≤ ulanyjy möhleti.
Okamak/ýazmak üçin dürli wagtlar: ýazgylar has gysga we has berk; okamak hedging etmäge mümkinçilik berýär.

3) Idempotentlik we howpsuz gaýtalanmalar

Okamak (GET/Idempotent RPC): '5xx', 'UNAVAILABLE', tor wagtlary howpsuz gaýtalamak.

Bellikler:
  • Serhetde 'Idempotency-Key' (HTTP) ýa-da request-ID ulanyň; serwer duplizirlemeli.
  • Idempotent prosessorlary ýazyň: "upsert", "at-least-once" + kompensasiýa (saga).
  • Daşarky tölegler/özara hasaplaşyklar - diňe idempotent açarlary we amallar žurnaly bilen.

4) Backoff algoritmleri

Exponential: 'base 2 ^ attempt', çäkli 'max _ backoff'.
Decorrelated Jitter (full/equal jitter): müşderileri sinhronlaşdyrmak üçin aralykda tötänlik.
GCRA/Token-Bucket-şuňa meňzeş gijikdirmeler: rate limits bilen ylalaşyldy.
Serhetler: 'initial _ backoff' (50-200 ms okalýar; 200-500 ms), 'max _ backoff' (1-5 s), 'max _ elapsed' (mysal üçin 3-10 s).

Maslahat berilýän şablon: eksponensial backoff + full jitter.

5) Karar kabul etmegiň "gaýtalamak/gaýtalamazlyk" syýasaty

Şu wagt gaýtalaýarys:
  • Tor ýalňyşlyklary/wagtlary, '429' (hormat bilen 'Retry-After'), 'ýumşak' 5xx '(' 502/503/504 '), gRPC' UNAVAILABLE/DEADLINE _ EXCEEDED '.
Şunda gaýtalanmaýar:
  • '4xx' (käbir ssenariýalarda '409/429/408' -dan başga), iş ýalňyşlyklary, '401/403', tassyklama ýalňyşlyklary, aýdyň 'DoNotRetry' baýdagy.
Akylly kadadan çykmalar:
  • '409 Conflict' - käwagt konsensusdan/loklardan soň gijikdirilip gaýtalanýar.
  • '404' eventually consistent okamak üçin - kiçijik backoff bilen bir-iki gezek retray.

6) Concurrency caps we "retraý tupany"

Bir wagtyň özünde per-client/per-tenant/per-endpoint retraýalaryny çäklendiriň.
Haýyşnama synanyşyklaryň jemi çägi (mysal üçin 2-3).
Nobatlary köpeltmezlik üçin admission control arkaly "gyzgyn" end nokatlaryny haýalladyň.

7) Circuit Breaker we çäkler bilen özara gatnaşyk

CB açyk bolsa, göni retra etmäň - fallback-a gidiň ýa-da 'half-open' synagyna garaşyň.
'429' -da 'Retry-After' -e hormat goýuň; ol ýok bolsa - "ýumşak" backoff ulanyň.
Retralar ýükleri artdyryp biler; adaptasiýa bosagalaryny ulanyň (waka bolan ýagdaýynda 'max _ attempts' -i azaldyň).

8) Teswirnamalar we şertnamalar

HTTP

Kodlar: '408/429/5xx'.
Sözbaşylar: 'Retry-After', 'RateLimit-', 'Idempotency-Key', 'Request-Id'.
Müşderi 'X-Request-Timeout '/' Deadline-At' geçirmeli.

gRPC

Möhletli konteksti ulanyň; "UNAVAILABLE", "DEADLINE _ EXCEEDED" -e hormat goýuň, usulyň retraý polisleri.
Idempotent RPC üçin - retraýlary açyň; mutasiýa üçin - diňe idempotentligiň goldawy bilen.

9) Nobatlar, fon meseleleri we integrasiýa

At-least-once prosessorlary → idempotent hereketleri, açar boýunça duplikasiýa.
Synanyşyklaryň arasynda backoff üçin Delay queue (mysal üçin 5s/30s/2m).
Dad-letter queue (DLQ) synanyşyk çäkleri we el bilen işlemek.
Outbox/CDC - gaýtalanmalar geleşik bitewiligini bozmaz ýaly.

10) Hedging vs Retries

Hedging (aýna soragy) guýruk gizlinliginde ýokary derejeli okamak üçin peýdalydyr.
Çäklendiriň: X% -den köp bolmaly däl, "başlangyç-grace" gijikdirilmegi (mysal üçin p95-gizlinlik), ýitirilenleri ýatyrmak.
Güýçli idempotentlik bolmazdan, ýazgy amallaryna hedging ulanmaň.

11) Telemetriýa we gözegçilik etmek

Теги: `tenant_id`, `endpoint`, `attempt`, `decision` (retry/skip), `reason`, `backoff_ms`, `deadline_ms`, `idempotency_key`.
Metrikler: retraýlaryň paýy, retraýlardan soň üstünlik, p95/p99 "end-to-end", geçen möhletleriň sany, CB-iň işleýşi.
Audit ýazgylary: "şowhunly" açarlaryň/endpointleriň ýokarky N, 429/503-den korrelasiýa.

12) Synag we bulam-bujarlyk

Profiller: "arra" (burst-sessizlik), "tupan" (köpçülikleýin wagt), "ýelmeşýän" ýalňyşlyklar (her N-i), gizlinlik guýruklary.
Limiter/kesiş/nobat setiriniň şowsuzlyklary, clock-skew.
Umumy dowamlylygyň (attempts + backoff) SLO-a laýyk gelýändigini barlamak.

13) Syýasatyň ýalan resminamasy

pseudo handle(req, deadline):
attempt = 0 backoff = initial()
while attempt < MAX_ATTEMPTS and now() < deadline:
attempt += 1 with timeout(per_attempt_timeout(deadline, attempt)):
try:
resp = call(req)
if isRetryableStatus(resp): raise Retryable(resp. status)
return resp except Retryable as e:
if circuit. isOpen(dep) or! isIdempotent(req): break sleep(jitter(backoff))
backoff = min(exp(backoff), MAX_BACKOFF)
except NonRetryable:
break return fail_or_fallback(req)

14) Konfigurasiýa şablony (mysal)

yaml retries:
default:
max_attempts: 3 initial_backoff_ms: 150 max_backoff_ms: 2000 strategy: exponential_full_jitter respect_retry_after: true per_attempt_timeout_fraction: 0. 4 # 40% of remaining deadline hedging:
enabled: false read_heavy:
max_attempts: 4 initial_backoff_ms: 80 max_backoff_ms: 1200 hedging:
enabled: true start_after_p95_ms: 300 max_extra_requests_ratio: 0. 05 write_strict:
max_attempts: 2 initial_backoff_ms: 250 max_backoff_ms: 1000 idempotency_required: true

limits:
concurrent_retries_per_tenant: 100 concurrent_retries_per_endpoint: 20

15) Azyk önüminden öň çek-sanawy

  • Möhletler jaňlar arkaly ýaýradylýar; SLO ≤ umumy dowamlylygy.
  • Jitter bilen backoff algoritmi; parametrler ýük synagy bilen tassyklanýar.
  • Idempotentlik: ýazgylar üçin açarlar/magazinesurnallar/öwezini dolmak.
  • Retraý syýasatçylar okamak we ýazmak üçin tapawutlanýar; respect `Retry-After`.
  • Retraýlaryň bäsdeşlik ukyby we synanyşyklaryň umumy sany çäklidir.
  • Circuit breaker we rate limits bilen integrasiýa sazlandy.
  • Telemetri: bellikler, metrikler, sebäpler; p95/p99 dashbordlary, retraýlardan soň üstünlikleriň paýy.
  • "Tupan" we gizlinlik guýruklarynyň synaglary, meseleler üçin DLQ.
  • Müşderiler üçin resminamalar: kodlar/sözbaşylar, backoff we ýatyryş mysallary.

16) Adaty ýalňyşlyklar

Taýmautsyz/möhletsiz gaýtalamak - "baky garaşmak".
Jittersiz kesgitlenen arakesmeler - sinhron tolkunlar we DDoS-öz-özüni işlemek.
Idempotentlik bolmazdan howply ýazgylaryň retralary - goşa we rasinhronizasiýa.
'Retry-After' we CB signallaryny äsgermezlik etmek - hadysanyň güýçlenmegi.
Caps we admission control ýoklugy sebäpli nobatlardaky dar ýerler.
Retraýlaryň sebäpleriniň/kararlarynyň telemetriýasynyň ýoklugy - "kör uçuş".

17) Çalt reseptler

API köpçülige okalýar: 3 synanyşyk, 'initial = 100ms', 'max = 1s', full jitter, 5% traffige çenli hedging.
Kritiki ýazgylar (töleg): 1-2 maksimum synanyşyk, berk wagt, hökmany 'Idempotency-Key', hedgingsiz.
Daşarky integrasiýalar: '429/Retry-After', 'max _ attempts = 3', 'max _ backoff = 2-5s', gidýän akymyň çäkleri.
Fon meseleleri: delay-backoff (5s → 30s → 2m), DLQ, idempotent prosessorlary.

Netije

Gowy gaýtalama syýasaty - bu çalt dikeldiş bilen gözegçilik edilýän şowsuzlygyň arasyndaky deňagramlylyk. Möhletler, idempotentlik, jitter bilen eksponensial backoff, bäsdeşligi çäklendirmek we infrastruktura signallaryna hormat goýmak retralary "tupandan" SLO-ny saklamak we ygtybarlylygy ýokarlandyrmak guralyna öwürýär.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.