IOSOR Viden

API-hastighedsgrænser fra pilot til produktion: backoff uden at brænde prepaid

Pilot- og produktionsgrænser, eksponentiel backoff, idempotens, sandbox- versus produktionsnøgler og et begrænset webhook-replayvindue — så retries ikke tømmer prepaid-pungen.

En 429 er ikke en invitation til at hamre send-API’et, indtil noget går igennem. På prepaid er en retrystorm en pungbegivenhed: dobbelt OTP, stablede alerts, umatchede ledgerlinjer. Grænser findes, så produkt, engineering og finance deler ét loft. Fra pilot til produktion er ikke «fjern cap» — kontrakterede grænser, backoff der ærer idempotens, adskilte sandbox- og produktionsnøgler, og et webhook-replayvindue der ikke dobbeltdebiterer. Se idempotens, gensendelse og penge.

IOSOR er white-label prepaid: autentificerede kald, korrelerbare debiteringer, clientsikre fejl der aldrig dumpe fremmede mærkeladninger. live / in setup er uafhængigt af hvor hårdt I retrier — en korridor in setup bliver ikke Live, fordi klienten loopede. Nær USD 1,000+ månedlig brug går retrybudgetter og nøglecutover ind i kommerciel gennemgang. Hold skift fra sandbox til produktion og webhook-signatur og replayvindue i samme runbook.

Grænser beskytter prepaid, det er ikke en fejl

Grænser begrænser, hvor mange accepterede intents der rammer pungen pr. vindue — ikke hvor mange TCP-forsøg balanceren lavede. Dokumentér vindue (pr. nøgle, konto, destinationsklasse), kode og Retry-After. En klient der læser 429 som «prøv hårdere» løber mod finance. Eksportér grænseafvisninger ved siden af vellykkede debiteringer. Katalog live stopper stadig ved det offentliggjorte loft; in setup er ikke en ubegrænset sandbox.

Signal Engineering Pung
429 / Retry-After Backoff, ær vinduet Nul ekstra debitering for samme intent
5xx / timeout Retry i budget med samme idempotensnøgle Én debitering hvis første forsøg landede
4xx business-afvisning Ikke blind retry Ingen debitering, eller navngiven afvisningslinje

Backoff uden anden debitering: grænser med idempotens

Eksponentiel backoff uden idempotensnøgle gør et flimrende net til to OTP’er. Nøglen er unik pr. forretningsintent, ikke pr. TCP-forsøg, og returnerer samme accepterede resultat inden for en klar TTL. Brugergensend er en anden produkthandling med egen grænse. Low-balance-stop gælder: en retry må ikke gennembore en tom pung.

Pilotgrænser versus produktionsgrænser

Pilotnøgler skal være strammere: lavt volumen, hurtig synlighed, billige fejl. Produktionsgrænser er kontrakteret for korridorer I faktisk kører. At hæve et loft er en kontoændring med ejer. Loadtests hører til sandboxnøgler; en produktionsnøgle i et soak brænder prepaid. Lov ikke produktions-QPS, mens katalogkorridoren er in setup.

Nøgler og webhook-replay i samme cutover

Send-grænser redder jer ikke, hvis webhook-forbrugeren behandler DLR dobbelt. Cutover: frys sandboxtrafik, udsted produktionsnøgler, pege webhooks på produktionsforbrugere, verificér signaturer, begræns replayvinduet, derefter én ægte intent. Et gentaget callback kl. 02:00 skal være no-op, ikke en anden debitering. Adskilte secrets; lim dem aldrig ind i en sag.

Røde flag

  • «Retry til 200» uden idempotensnøgle
  • 429 som blød 200
  • Produktionsnøgle i en loadtest eller sandbox-webhook-URL i produktion
  • Replayvindue målt i uger, eller usignerede callbacks «til piloten»
  • Brugergensend blandet ind i auto-retrybudgettet
  • Klientfejl der dumper rå upstreamkoder

Start med IOSOR

Skriv limitvinduet ned — pr. nøgle, konto eller destinationsklasse — og den Retry-After I vil ære. Tving en 429, træk jer, og prøv samme hensigt igen med samme Idempotency-Key. Ledgers skal vise én debitering. Skift sandbox-nøglen til production-nøglen, før I hæver et loft.

IOSOR takeaway

Gør: behandl 429 som en pause med Retry-After, ikke som en blød succes. Par hvert backoff med den oprindelige nøgle, så prepaid ser én accepteret hensigt.

Var denne guide nyttig?

Relaterede vejledninger