Topik temu duga representatif

Temu Duga Reka Bentuk Sistem: Mereka bentuk saluran pemeteran penggunaan berbilang penyewa

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Reka bentuk perkhidmatan yang memeter penggunaan API untuk banyak penyewa dan menjana kedua-dua kuota hampir masa nyata serta invois bulanan yang boleh dipercayai.

Makluman dan latar situasi

Peristiwa penggunaan yang sama menyalurkan had operasi dan pelaporan kewangan. Peristiwa boleh tiba lewat, berulang, atau dibetulkan, dan seorang penyewa yang bising tidak boleh melengahkan penyewa lain atau membaca data penyewa lain.

Perkara yang diuji oleh penemu duga

  • Memisahkan fakta tak boleh ubah (immutable) daripada unjuran boleh ubah (mutable).
  • Menentukan keidempotenan, tetingkap masa peristiwa, pembetulan, dan kemuktamadan invois.
  • Mereka bentuk pengasingan penyewa, tekanan balik (backpressure), dan bukti penyesuaian.

Soalan penjelasan sebelum menjawab

  • Apakah kadar peristiwa, dimensi, pengekalan, dan tarikh akhir pemuktamadan invois?
  • Adakah penggunaan diukur semasa penerimaan permintaan, penyempurnaan, atau kesan perniagaan yang berjaya?
  • Bolehkah pengeluar menghantar semula ID peristiwa, dan bagaimanakah pembetulan atau bayaran balik diwakili?
  • Keputusan kuota manakah yang memerlukan kesegaran tahap saat, dan laporan manakah yang boleh ditangguhkan?

Rangka kerja jawapan 30 saat

Saya akan merekodkan fakta penggunaan tak boleh ubah berskop penyewa dengan ID peristiwa yang stabil, masa peristiwa, unit, sumber, dan versi skema. Log append-only menyalurkan unjuran kuota dan pengebilan yang berasingan. Penyahduplikasian dikuncikan mengikut penyewa dan ID peristiwa; pembetulan ialah fakta baharu, bukan penulisan ganti. Bacaan kuota menggunakan unjuran pantas yang terikat, manakala invois ditutup hanya selepas penanda aras air (watermark) dan laluan penyesuaian. Setiap agregat kekal boleh dikesan kembali kepada fakta sumber.

Analisis mendalam langkah demi langkah

1. Rekodkan fakta

Sahkan ketulenan pengeluar, sahkan skop penyewa dan unit, serta simpan peristiwa mentah secara kekal sebelum menghantar perakuan. Wajibkan ID peristiwa pengeluar, sumber, masa peristiwa, dan versi pengukuran. Tolak penulisan yang salah format atau merentas penyewa dan simpan ringkasan (digest) untuk audit.

2. Jadikan penulisan idempoten

Kuatkuasakan kekangan keunikan pada (tenant, source, event_id). Duplikasi dengan ringkasan yang sama mengembalikan hasil sedia ada; ringkasan yang berbeza dikuarantin sebagai konflik. Jangan gunakan baris invois sebagai stor keidempotenan kerana percubaan semula operasi berlaku sebelum pengebilan.

3. Unjurkan kuota dan pengebilan secara berasingan

Unjuran kuota mengekalkan tetingkap pendek, pembilang semasa, dan dasar fail-closed apabila kesegaran tidak diketahui. Pengebilan mengagregatkan mengikut unit kontraktual dan versi harga, memelihara baldi masa peristiwa dan pautan pembetulan. Tiada unjuran yang mengedit log fakta tak boleh ubah.

4. Kendalikan data lewat dan tutup invois

Gunakan watermark berdasarkan masa peristiwa yang diperhatikan ditambah had kelewatan yang dipersetujui. Peristiwa selepas watermark dimasukkan ke dalam lejar pelarasan dan kitaran pengebilan atau aliran kerja kredit seterusnya. Sebelum pemuktamadan, sesuaikan kiraan dan jumlah daripada log terhadap unjuran dan rekodkan versi pengiraan.

5. Beroperasi dengan selamat

Partisikan baris gilir dan storan mengikut penyewa atau kunci perkongsian saksama, gunakan kuota dan tekanan balik, serta asingkan surat mati (dead letters). Pantau latensi penyerapan (ingestion lag), kadar duplikasi dan konflik, usia watermark, hanyutan unjuran, volum pembetulan, dan latensi penutupan invois. Sulitkan data, sekat eksport, dan jadikan setiap pembetulan boleh diaudit.

Contoh jawapan berkualiti tinggi

“Saya akan menyimpan fakta penggunaan tak boleh ubah berskop penyewa dengan ID peristiwa, sumber, masa peristiwa, unit, skema dan versi harga sebelum menghantar perakuan. Log append-only menyalurkan unjuran kuota dan pengebilan yang bebas. Percubaan semula dengan ID dan ringkasan yang sama adalah idempoten; ringkasan yang diubah dikuarantin. Kuota menggunakan unjuran pantas yang terikat, manakala invois ditutup hanya selepas watermark kelewatan dan penyesuaian terhadap fakta sumber. Peristiwa lewat menjadi rekod pelarasan, dan pemetakan penyewa, tekanan balik, penyulitan dan metrik hanyutan melindungi ketepatan serta keadilan.”

Kesilapan biasa

  • Menulis ganti agregat pada setiap peristiwa → data lewat dan pembetulan menjadi tidak kelihatan → kekalkan fakta dan unjuran tak boleh ubah.
  • Menggunakan ketibaan jam dinding sebagai masa penggunaan → peristiwa tertunda masuk ke invois yang salah → kumpulkan mengikut masa peristiwa dan watermark.
  • Berkongsi satu baris gilir global → penyewa yang bising mencipta sekatan kepala barisan (head-of-line blocking) → partisi atau kuatkuasakan perkongsian saksama.
  • Memuktamadkan tanpa penyesuaian → hanyutan unjuran menjadi pertikaian pengebilan → bandingkan unjuran dengan fakta sumber dan versikan pengiraan.

Soalan susulan dan jawapan

Bagaimanakah anda menyokong bayaran balik atau pembetulan?

Tambahkan fakta pampasan yang dipautkan kepada peristiwa asal dan versi kontrak. Kira semula unjuran yang terjejas atau buat catatan lejar pelarasan; jangan sekali-kali mengubah bukti asal.

Bagaimana jika kuota dan pengebilan tidak sepadan buat sementara waktu?

Isytiharkan jaminan kesegaran dan kemuktamadan yang berasingan. Kuota boleh menjadi anggaran dalam tetingkap terikat, manakala pengebilan kekal sementara sehingga semakan watermark dan penyesuaian lulus; dedahkan keadaan tersebut kepada pengendali dan pelanggan.

Bagaimanakah anda menghalang penyewa daripada membaca penggunaan penyewa lain?

Kuatkuasakan skop penyewa dalam laluan penulisan, partisi storan, pertanyaan unjuran, eksport, dan alatan sokongan. Uji kebenaran pada setiap sempadan dan log capaian tanpa memasukkan muatan peristiwa yang sensitif.

Sumber awam

Soalan berkaitan

Alat temu duga berkaitan

Gunakan Jawab untuk jawapan reka bentuk sistem

Jelaskan keperluan terlebih dahulu, kemudian teruskan dengan skala, seni bina, pilihan komponen dan pertukaran (trade-off).

Lihat alat