IOSOR Знания

Лимити на скорост на API от пилот до продукция: backoff без да се гори prepaid

Пилотни и продукционни лимити, експоненциален backoff, идемпотентност, sandbox срещу продукционни ключове и ограничено прозорче за replay на webhook — за да не изпразват retry-тата prepaid портфейла.

429 не е покана да чукате send API, докато не мине нещо. На prepaid retrystorm е събитие на портфейла: двоен OTP, натрупани alerts, несдвоени ledger редове. Лимитите съществуват, за да споделят продукт, engineering и finance един таван. От пилот до продукция не е „махни cap“ — договорни лимити, backoff, който уважава идемпотентност, отделни sandbox и продукционни ключове и прозорче за replay на webhook, което не дебитира два пъти. Вижте идемпотентност, повторения и пари.

IOSOR е white-label prepaid: автентикирани повиквания, корелируеми дебити, client-safe грешки, които никога не изсипват чужди бранд payload-и. live / in setup е независимо от колко силно retry-вате — коридор in setup не става Live, защото клиентът е loop-нал. Близо до USD 1,000+ месечна употреба retry бюджетите и cutover на ключове влизат в търговски преглед. Дръжте преход от sandbox към продукция и подпис на уебхук и прозорец за повторение в един runbook.

Лимитите пазят prepaid, това не е бъг

Лимитите ограничават колко приети intent-а удрят портфейла на прозорче — не колко TCP опити е направил balancer-ът. Документирайте прозорчето (на ключ, акаунт, клас дестинация), кода и Retry-After. Клиент, който чете 429 като „опитай по-силно“, бяга срещу finance. Експортирайте отказите на лимит до успешните дебити. Каталогът live пак спира на публикувания таван; in setup не е неограничен sandbox.

Сигнал Engineering Портфейл
429 / Retry-After Backoff, уважавайте прозорчето Нула допълнителен дебит за същия intent
5xx / timeout Retry в бюджет със същия идемпотентен ключ Един дебит, ако първият опит е кацнал
4xx business reject Не retry-вайте насляпо Няма дебит, или именуван reject ред

Backoff без втори дебит: лимити с идемпотентност

Експоненциалният backoff без идемпотентен ключ прави от трепереща мрежа два OTP. Ключът е уникален на бизнес intent, не на TCP опит, и връща същия accepted резултат в ясен TTL. User resend е друго продуктово действие със собствен лимит. Stop при ниско салдо важи: retry не трябва да пробива празен портфейл.

Пилотни лимити срещу продукционни

Пилотните ключове трябва да са по-стегнати: нисък обем, бърза видимост, евтини грешки. Продукционните лимити са договорни за коридорите, които реално въртите. Вдигането на таван е промяна на акаунт със собственик. Load тестовете принадлежат на sandbox ключове; продукционен ключ в soak гори prepaid. Не обещавайте продукционен QPS, докато каталожният коридор е in setup.

Ключове и replay на webhook в един cutover

Send лимитите не ви спасяват, ако webhook consumer обработи DLR два пъти. Cutover: замразете sandbox трафика, издайте продукционни ключове, насочете webhook-ите към продукционни consumers, проверете подписите, ограничете прозорчето за replay, после един реален intent. Повторен callback в 02:00 трябва да е no-op, не втори дебит. Отделни тайни; никога не ги лепете в ticket.

Червени флагове

  • „Retry до 200“ без идемпотентен ключ
  • 429 като мек 200
  • Продукционен ключ в load тест или sandbox webhook URL в продукция
  • Прозорче за replay в седмици, или неподписани callbacks „за пилота“
  • User resend смесен в бюджета за auto-retry
  • Грешки към клиента, които изсипват сурови upstream кодове

Започнете с IOSOR

Запишете прозореца на лимита — на ключ, сметка или клас дестинация — и Retry-After, който ще почитате. Принудете 429, отстъпете и повторете същото намерение със същия Idempotency-Key. Ledger трябва да покаже един дебит. Сменете sandbox ключа с production, преди да вдигате таван.

Обобщение IOSOR

Правете: третирайте 429 като пауза с Retry-After, не като мек успех.

Полезно ли беше ръководството?

Свързани ръководства