IOSOR Panduan

Insiden Minggu API: Ketiadaan Idempotensi Membekukan, Bukan Mengulang

Harungi insiden API utama pertama anda pada CPaaS prabayar label putih tanpa mencetuskan gelung percubaan semula atau kerosakan lejar.

Gangguan rangkaian sering kali menyebabkan sistem pelanggan menghantar semula permintaan SMS yang sama secara agresif. Tanpa kawalan ketat, tindakan ini akan mendebit baki prabayar pelanggan sebanyak dua kali bagi transaksi yang sama. Masalah ini diselesaikan dengan melaksanakan kunci transaksi berasaskan kunci idempotensi pada gerbang API.

Amaran tengah malam dan kesunyian pada talian

Papan pemuka anda menunjukkan garis mendatar pada penghantaran DLR manakala trafik SMS masuk melonjak. Pecahan rangkaian hiliran menjatuhkan paket TCP semasa permintaan, dan mikroservis pelanggan anda menganggap kegagalan. Tanpa perlindungan yang betul, pelanggan automatik mula menghentam gerbang anda dengan muatan yang sama. Anda sedang melihat ribut percubaan semula klasik terhadap lejar prabayar di mana setiap permintaan pendua berisiko mendebitkan baki dua kali.

Mengapa percubaan semula tanpa kawalan mengosongkan baki prabayar

Apabila tamat masa pelanggan berlaku, logik aplikasi naif segera menghantar semula permintaan HTTP. Jika lapisan hala anda memproses pendua ini secara bebas, setiap pukalan API mencetuskan peruntukan nombor JIT baharu atau penghantaran SMS baharu. Ini melanggar logik lantai prabayar USD 20 dengan menurunkan baki di bawah sifar sebelum enjin risiko sempat bertindak. Anda tidak boleh bergantung pada harapan atau janji pihak pelanggan.

Mengasingkan kegagalan dan menghentikan gelung

Keutamaan operasi segera anda adalah menghentikan trafik masuk sebelum menampal kod. Laksanakan peraturan pengehadan kadar kecemasan di pinggir gerbang API untuk menggugurkan muatan yang sama yang tiba dalam tingkap masa yang sempit. Jangan cuba memproses transaksi semasa keadaan lejar sedang dipertikaikan. Jika platform anda menghampiri ambang semakan lembut hampir USD 1,000 sebulan dalam jumlah trafik yang dipertikaikan, pembawa hulu akan menandakan ID pedagang anda kerana volatiliti yang mencurigakan. Bekukan titik akhir pelanggan yang terjejas serta-merta melalui konsol pentadbiran.

Menverified keadaan transaksi dan konsistensi lejar

Sebaik sahaja ribut reda, anda mesti mengaudit setiap pelarasan baki yang dibuat semasa tingkap insiden. Bandingkan log lejar dalaman anda dengan isyarat HB pembawa untuk mengenal pasti permintaan yatim di mana SMS dihantar tetapi penghantaran DLR gagal direkodkan. Pembangun sering melakukan kesilapan dengan menganggap kekangan pangkalan data satu utas adalah mencukupi, seperti yang diperincikan dalam Bulan Kedua API: Mengurus Hutang Idempotensi Selepas Kitaran Pertama. Ia tidak mencukupi.

Mengamankan penghantaran webhook terhadap ulangan gema

Pengendalian webhook masuk secara selamat adalah sama kritikal dengan pengurusan panggilan API keluar semasa insiden. Pelanggan yang memproses kemas kini DLR tak segerak boleh jatuh ke dalam gelung tak terhingga jika logik mereka tidak mengesahkan tandatangan webhook dan tetingkap replay. Tanpa pengesahan yang ketat, webhook pendua boleh mencetuskan berbilang proses kemas kini status dalam sistem pelanggan. Pastikan setiap acara mempunyai pengecam unik yang boleh dijejaki oleh penerima.

Bermula dengan IOSOR untuk kawalan transaksi berdaya tahan

Pada minggu insiden, bekukan hantaran keluar baharu dahulu. Tambah Idempotency-Key pada setiap hantar yang masih terbang, eksport baris debit berganda, henti cubaan semula klien senyap. Jangan buka ribut cubaan semula untuk mengejar.

Inti IOSOR

Buat: anggap kunci hilang sebagai pembekuan, kemudian isi dan selaraskan ledger.

Jangan: tutup insiden sementara DLR berganda masih mencetak debit kedua. Status tiket bukan status wang.

Adakah panduan ini membantu?

Panduan berkaitan