IOSOR Maarifa

Idempotency ya API ya kutuma: nakala, majaribio tena na pesa

Mwongozo wa wasanidi wa API ya kutuma ya prepaid — funguo za idempotency, majaribio tena salama, kuzuia nakala na uhusiano rafiki wa ledger, ili makosa ya uhandisi yasigeuke matukio ya fedha.

Timeout hutokea. Visawazisha mzigo hujaribu tena. Wateja wa simu hugusa mara mbili. Bila idempotency, bidhaa ya "tuma mara moja" inakuwa deni mbili la prepaid na OTP maradufu. Mwongozo huu ni kwa engineering na product ya kiufundi inayounganisha API ya ujumbe ya prepaid white-label — ambapo kila nakala inaonekana katika pochi. IOSOR inatarajia ujumuishaji unaozingatia pesa: simu zilizoidhinishwa, deni zinazoweza kuhusishwa, na hitilafu za mteja zisizomwaga mzigo wa chapa ngeni.

Kwa nini nakala zinakuwa matatizo ya pesa

Hali ya kushindwa Mtumiaji anaona Pochi inaona
Timeout ya mteja + jaribio tena la kipofu OTP mbili / tahadhari mbili Deni mbili
Kishughulikia webhook kisicho idempotent Athari mbili Mkanganyiko katika mafanikio
Kutuma tena kwa mtumiaji juu ya auto-retry Watumiaji waliochukia Vitengo vilivyokusanywa
Hakuna uhusiano

Funguo za idempotency zinazostahimili majaribio tena

Njia kubwa ya kutuma inakubali ufunguo uliotengenezwa na mteja ambao ni wa kipekee kwa nia ya biashara, si jaribio la TCP. Lazima urudishe matokeo yale yale yaliyokubaliwa kwenye replay ndani ya dirisha wazi la TTL. Hii inazuia kuunda kimya deni la pili kwa nia ile ile. Ufunguo lazima urekodiwe kando ya kitambulisho cha ujumbe na rejeleo la prepaid.

Bajeti za majaribio tena dhidi ya kutuma tena kwa mtumiaji

Majaribio ya kiotomatiki yanahitaji bajeti: majaribio ya juu, backoff, na madarasa ya hitilafu yanayoweza kujaribiwa tena. Kutuma tena kwa mtumiaji ni hatua tofauti ya bidhaa na mipaka yake ya kiwango na gharama ya prepaid. Kuchanganya hizi ndiko kunakofanya mtandao usio na utulivu kuwa tukio la pochi ya wikendi.

Orodha ya mnunuzi / engineering

  1. Semantiki za ufunguo wa idempotency na TTL zilizorekodiwa.
  2. Jaribio la replay linalothibitisha deni moja kwa nia moja.
  3. Kutenganisha bajeti ya auto-retry kutoka kwa mantiki ya kutuma tena kwa mtumiaji.
  4. Vitambulisho vya uhusiano katika ombi, hali ya ujumbe, na ledger ya prepaid.
  5. Staging inayotumia korido halisi — taa za kijani za mock si uzinduzi.
  6. Usafi wa funguo na privilegia ndogo kwa hati za kutuma.
  7. Kushughulikia misimbo 429 na 503 bila kupoteza funguo asili ya nia.
  8. Tahadhari za kiotomatiki kwa viwango vya juu vya kukataliwa kwa duplicate-key.

Bendera nyekundu

  • "Jaribu tena hadi 200" bila funguo za idempotency.
  • Kishughulikia webhook kisicho idempotent kinachochochea athari mara mbili.
  • Funguo za siri kamili au tokeni za auth zinazoonekana kwenye kumbukumbu au tiketi za usaidizi.
  • Hitilafu zinazoonyesha mizigo ya chapa ya juu au alama za ndani za stack kwa watumiaji.
  • Hakuna mipaka ya bajeti ya majaribio tena.

Anza na IOSOR

Katika koni ya kutuma, piga OTP moja au tahadhari yenye ufunguo wa idempotency uliotengenezwa na mteja. Lazimisha muda wa mteja kuisha, kisha cheza tena ombi lilelile ndani ya TTL ya ufunguo. Fungua ledger ya prepaid: nia hiyo lazima ionyeshe debit moja na ujumbe mmoja unaoonekana. Mistari miwili inamaanisha ufunguo haukuishi jaribio jingine — rekebisha TTL na kishughulikiaji kabla korido inabaki Live.

Hitimisho la IOSOR

Fanya: chukulia kila kutuma kwanza kama tukio la ledger. Ufunguo ni wa kipekee kwa nia ya biashara, si jaribio la TCP. Jaribio la moja kwa moja lina bajeti; tap ya mtumiaji kutuma tena ni kitendo kingine cha bidhaa chenye gharama yake ya prepaid.

Usifanye: kupiga hadi 200 bila ufunguo, wala kuruhusu webhook isiyo na idempotency kuchapa athari ya pili. OTP mbili kwa tap moja ni hitilafu ya pesa, si hadithi ya mtandao.

Je, mwongozo huu ulisaidia?

Miongozo inayohusiana