IOSOR Žinios

Siuntimo API idempotentiškumas: dublikatai, bandymai iš naujo ir pinigai

Kūrėjų vadovas prepaid siuntimo API — idempotentiškumo raktai, saugūs pakartotiniai bandymai, dublikatų prevencija ir ledgerui draugiška koreliacija, kad inžinerijos klaidos netaptų finansiniais incidentais.

Timeout'ai įvyksta. Apkrovos balansuotojai bando iš naujo. Mobilūs klientai dukart baksteli. Be idempotentiškumo produktas "siųsti kartą" tampa dvigubu prepaid nurašymu ir dubliuotu OTP UX. Šis vadovas skirtas engineering ir techniniam product, integruojantiems white-label prepaid messaging API — kur kiekvienas dublikatas matomas piniginėje.

IOSOR tikisi money-aware integracijų: autentifikuotų kvietimų, koreliuojamų nurašymų ir klientų klaidų, kurios niekada neišmeta svetimų prekės ženklo payload'ų. Arti USD 1 000+ mėnesinio platformos naudojimo dublikatų disciplina nebėra neprivaloma. Kiekvieną siuntimą traktuokite pirmiausia kaip ledger įvykį, paskui kaip tinklo kvietimą — kad finansai ir on-call dalytųsi viena istorija.

Kodėl dublikatai tampa pinigų problemomis

Gedimo režimas Vartotojas mato Piniginė mato
Kliento timeout + aklas pakartojimas Du OTP / du įspėjimai Du nurašymai
Neidempotentiškas webhook tvarkytuvas Dvigubi šalutiniai efektai Painiava prie success
Vartotojo persiuntimas ant auto-retry Sudirgę vartotojai Sukaupti vienetai
Trūksta koreliacijos "Nepavyko" bilietai Nesutapatintos ledger eilutės

Demo atleidžia. Gamybos finansai — ne. Esant prepaid intensyvumui aklų pakartojimų savaitgalis tampa suderinimo projektu, ne žurnalo išnaša. Projektuokite happy path ir timeout kelią ta pačia nurašymo taisykle.

Idempotentiškumo raktai, išgyvenantys pakartotinius bandymus

Rimtas siuntimo kelias priima kliento sugeneruotą raktą, kuris yra unikalus verslo ketinimui, ne TCP bandymui. Jis privalo grąžinti tą patį accepted rezultatą replay metu aiškiame TTL lange. Tai apsaugo nuo tylaus antro nurašymo tam pačiam ketinimui. Raktą loguokite šalia message ID ir prepaid nuorodos. Jis turi veikti per timeout'us, gateway pakartojimus ir support redrive.

Pakartotinių bandymų biudžetai vs vartotojo persiuntimas

Automatiniai pakartojimai reikalauja biudžeto: max bandymų, backoff ir retryable klaidų apibrėžimo. User-initiated resend yra kita produkto akcija su savo limitais ir prepaid kaštais. Šių dviejų pasaulių maišymas paverčia nestabilų tinklą savaitgalio finansiniu incidentu. Sujunkite abu su stop-on-low-balance ir aiškiomis atmetimo priežastimis.

Pirkėjo / engineering kontrolinis sąrašas

  1. Dokumentuota idempotentiškumo rakto semantika ir TTL.
  2. Replay testas, įrodantis vieną nurašymą vienam ketinimui.
  3. Atskiras biudžetas auto-retry ir user resend logikai.
  4. Koreliaciniai ID per request'ą, pranešimo statusą ir prepaid ledger'į.
  5. Staging, kuris imituoja realius koridorius — mock'ai nėra launch.
  6. Raktų higiena ir least privilege send kredencialams.
  7. 429 ir 503 kodų valdymas neprarandant originalaus ketinimo rakto.
  8. Automatizuoti įspėjimai apie aukštą atmestų dubliuotų raktų skaičių.

Raudonos vėliavos

  • "Retry'ink iki 200" be idempotentiškumo raktų naudojimo.
  • Webhook tvarkytuvai, kurie nėra idempotentiški ir sukelia šalutinius efektus dukart.
  • Pilni secret raktai ar auth tokenai loguose ar support bilietuose.
  • Klaidos, kurios grąžina upstream prekės ženklo payload'us ar stack trace galutiniam vartotojui.
  • Dubliuotų raktų stebėsenos trūkumas.

Pradėkite su IOSOR

Siuntimo konsolėje paleiskite vieną OTP arba įspėjimą su kliento sugeneruotu idempotencijos raktu. Priverskite kliento skirtąjį laiką ir pakartokite tą pačią užklausą rakto TTL lange. Atidarykite prepaid ledger: tas ketinimas turi rodyti vieną debetą ir vieną matomą žinutę.

IOSOR santrauka

Darykite: kiekvieną siuntimą pirmiausia laikykite ledger įvykiu. Raktas unikalus verslo ketinimui, ne TCP bandymui.

Ar šis vadovas buvo naudingas?

Susiję vadovai