Arahan dan konteks
Selepas penyewa ditutup, sistem menerima permintaan pemadaman. Data penyewa tersebar merentasi pangkalan data utama, storan objek, indeks carian, cache, dan sandaran. Pemadaman tidak boleh menyekat benang permintaan atau kehilangan kerja secara senyap apabila satu destinasi hilir tidak tersedia. Temuduga ini memberi tumpuan kepada pengaturan, idempoten, pemulihan, dan bukti di sebalik keadaan "selesai".
Apa yang diuji oleh penemuduga
Penemuduga ingin melihat semantik pemadaman ditakrifkan sebelum komponen dilukis. Reka bentuk yang kukuh merangkumi katalog data, mesin keadaan, pembahagian tugas, kunci idempoten, cubaan semula dan surat mati, kawalan keserentakan, kebolehpemerhatian, dan bukti akhir. Dokumentasi storan objek membezakan pemadaman serta-merta, versi, dan peraturan kitaran hayat; replika dan pemadaman tak segerak bermakna kejayaan pangkalan data utama bukan bukti bahawa setiap salinan telah diproses.
Soalan penjelasan untuk ditanya dahulu
Tanya sama ada skopnya adalah satu penyewa, satu pengguna, atau sumber yang dipilih; bagaimana padam keras, padam tertunda, dan tetingkap pengekalan ditakrifkan; sama ada sandaran dipadamkan serta-merta atau tamat tempoh selepas satu tetingkap; rekod audit mana yang mesti kekal tanpa menyalin data peribadi mentah; dan apakah had konsistensi, masa penyelesaian, skala, dan dasar yang terpakai. Jangan mencipta had masa perundangan yang tidak diberikan.
Rangka kerja jawapan 30 saat
Katakan: "Saya akan membina katalog data penyewa dan dasar pemadaman, kemudian mengatur kerja pemadaman berversi melalui penyesuai storan. Permintaan mencipta satu kerja idempoten dan kembali dengan cepat; baris gilir memacu fasa, dan setiap fasa merekodkan bukti, cubaan semula, dan ralat terakhirnya. Pengesah menandakan kerja sebagai selesai hanya apabila data utama, indeks terbitan, cache, dan sandaran yang dibenarkan oleh dasar memenuhi keadaannya; jika tidak, ia menjadualkan cubaan semula atau pengendalian manusia."
Analisis mendalam langkah demi langkah
1. Bina katalog data dan dasar
Untuk setiap rekod sumber, catat pemilikan penyewa, lokasi, derivasi, kaedah pemadaman, tetingkap pengekalan, dan pertanyaan pengesahan. Tandakan sandaran atau log yang tidak boleh dipadamkan serta-merta sebagai pengecualian dasar, termasuk tamat tempoh, kelulusan, dan cara ia kekal tidak boleh diakses untuk bacaan produk semasa pengekalan.
2. Hantar kerja pemadaman idempoten
Aliran penutupan mencipta deletionJobId yang unik secara global dan menggunakan generasi penyewa atau versi peristiwa penutupan sebagai syarat idempoten. API mengembalikan status diterima dengan cepat; permintaan pendua mengembalikan kerja yang sama. Simpan syot kilat versi katalog supaya pengeditan katalog kemudian tidak mengubah sempadan kerja.
3. Bahagikan kerja boleh cuba semula mengikut kebergantungan
Bekukan penulisan atau tukar keadaan penyewa dahulu, kemudian proses rekod utama dan objek, diikuti dengan indeks carian, cache, dan fail terbitan. Setiap penyesuai menggunakan (deletionJobId, resourceId, generation) sebagai kunci idempotennya. Kejayaan, tiada-sudah, dan ralat yang selamat untuk dicuba semula memerlukan hasil yang berbeza; ralat tidak boleh dicuba semula dihantar ke baris gilir surat mati dengan laluan pemulihan manusia.
4. Kendali replika, versi, dan sandaran
Storan objek mungkin mempunyai versi, peraturan kitaran hayat, dan replika merentas rantau; panggilan API padam yang berjaya tidak membuktikan bahawa salinan tak segerak hilang serta-merta. Rekodkan masa permintaan, versi yang diperhatikan atau penanda padam, dan semakan terakhir untuk setiap replika. Biarkan sandaran melalui dasar pengekalannya dan sahkan ketidakbolehpulihan selepas tamat tempoh daripada berpura-pura bahawa pemadaman adalah serta-merta.
5. Reka bentuk pengesah dan keadaan penyelesaian
Pengesah menanyakan katalog dan menyemak bacaan utama, carian indeks, bacaan cache, dan senarai objek. Mesin keadaan seharusnya membezakan sekurang-kurangnya ACCEPTED, RUNNING, WAITING_RETRY, BLOCKED, VERIFIED, dan FAILED. Hanya sumber yang diperlukan dengan bukti dan pengecualian dasar eksplisit boleh mencapai VERIFIED; penulisan bersyarat mencegah cubaan semula lama daripada menimpa hasil yang lebih baharu.
6. Tambah kebolehpemerhatian, pengasingan, dan audit
Jejaki kependaman, kadar kejayaan, cubaan semula, surat mati, pendiaman hilir, dan sumber yang tinggal mengikut penyewa dan kerja. Gunakan kelayakan khusus dan keistimewaan paling minimum untuk mencegah pemadaman merentas penyewa. Rekod audit menyimpan hanya ID kerja, jenis sumber, versi dasar, pelakon, dan ringkasan hasil, bukan data mentah. Amaran membezakan satu penyewa yang disekat daripada gangguan hilir global.
Jawapan contoh berkualiti tinggi
"Saya akan bermula dengan katalog jadual, awalan objek, indeks, kunci cache, dan dasar sandaran, setiap satu dengan pemilikan penyewa, kaedah pemadaman, dan pertanyaan pengesahan. Menutup penyewa menulis satu deletionJobId yang unik, membekukan penulisan baharu, dan memasukkan kerja ke dalam baris gilir. Pengatur mengikut kebergantungan: data utama dan objek dahulu, kemudian indeks dan cache; setiap penyesuai adalah idempoten mengikut generasi sumber. Bukti replika dan versi objek direkodkan, manakala sandaran mengikut dasar pengekalannya dan bukannya didakwa dipadamkan serta-merta. Pengesah menyemak semula utama, carian, cache, dan senarai objek dan berpindah ke VERIFIED hanya apabila setiap sumber yang diperlukan telah disahkan. Kegagalan hilir menggunakan penundaan eksponen kemudian laluan surat mati dengan pemilik yang dinamakan. Audit menyimpan versi dasar, ringkasan hasil, dan ID kerja; kelayakan diasingkan mengikut penyewa. Klien menerima status boleh ditanya dan bukti, bukan rentetan 'deleted' yang tidak disokong."
Kesilapan biasa dan penambahbaikan
- Memadam hanya baris utama: Lukiskan katalog data dan derivasi, kemudian takrifkan pemadaman dan pengesahan untuk setiap satu.
- Memanggil setiap destinasi hilir secara segerak: Gunakan baris gilir kerja dan mesin keadaan untuk mengasingkan kependaman permintaan daripada gangguan.
- Menganggap kerja pendua sebagai pengecualian: Takrifkan kunci idempoten setiap sumber dan bezakan tiada-sudah daripada kegagalan.
- Menjanjikan pemadaman sandaran serta-merta: Nyatakan tetingkap pengekalan, kitaran hayat, dan keadaan tamat tempoh yang boleh disahkan.
Soalan susulan dan respons
Apa yang patut dilihat klien apabila destinasi hilir terus gagal?
Kembalikan keadaan kerja boleh ditanya, fasa, kelas ralat, dan masa cubaan semula berikutnya tanpa mendedahkan kelayakan dalaman. Selepas bajet cubaan semula habis, pindah ke BLOCKED atau FAILED, maklumkan pemilik, dan kekalkan laluan sambungan semula yang selamat.
Bagaimana anda menghentikan kerja lama daripada memadam penulisan baharu?
Bekukan penulisan atau gunakan generasi penyewa. Setiap padam membawa generasi yang ditangkap semasa penciptaan, dan syarat storan menolak ketidakpadanan. Kemas kini katalog dan status juga menggunakan penulisan bersyarat berversi.
Bagaimana anda menguji bahawa VERIFIED tidak boleh menjadi positif palsu?
Suntik mesej pendua, replika tertunda, pembinaan semula indeks, pengisian semula cache, dan pemulihan sandaran. Jika pertanyaan simulasi masih boleh membaca data, pengesah mesti kekal tidak lengkap dan merekodkan bukti yang hilang.
Bagaimana jika log audit sendiri mengandungi maklumat penyewa?
Simpan hanya rujukan penyewa tidak boleh diterbalikkan atau cincangan, ID kerja, versi dasar, dan ringkasan hasil. Hadkan akses dan berikan rekod audit dasar pengekalannya sendiri. Pengauditan seharusnya membuktikan pemprosesan tanpa menyalin data yang dipadamkan.