Topik temu duga representatif

Temu duga reka bentuk sistem: Bagaimanakah anda mereka bentuk satah kawalan dasar kuota global?

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Platform API pelbagai wilayah membolehkan pasukan produk menentukan kuota penyewa, aplikasi dan titik akhir yang dikuatkuasakan oleh setiap tika get laluan. Reka bentuk satah kawalan dan data kuota, merangkumi versi dasar, pengedaran, ketekalan, lonjakan, degradasi, pengepala respons HTTP dan kebolehberauditan.

Gesaan dan konteks

Platform ini mempunyai beratus-ratus tika get laluan di pelbagai wilayah. Pasukan produk memerlukan permintaan sesaat, keserentakan dan kuota harian mengikut penyewa, aplikasi, titik akhir dan pelan, dengan perubahan berkuat kuasa dalam beberapa minit. Seorang penyewa tidak boleh menggunakan kapasiti kongsi secara berlebihan, namun API teras harus kekal tersedia semasa gangguan perkhidmatan kuota yang singkat.

Temu duga ini menguji pemisahan satah kawalan/satah data, model pengiraan, ketekalan pengedaran, pertukaran rentas wilayah dan tingkah laku kegagalan. Envoy membezakan pengehadan kadar tempatan daripada global, manakala RFC 9331 mentakrifkan medan RateLimit HTTP; hubungkan protokol, dasar produk dan keputusan masa jalan.

Perkara yang dinilai oleh penemu duga

Ketahui bentuk dasar, versi dan kelulusan, kunci penghurai (descriptor keys), baldi token atau tetingkap gelongsor, penyewa hangat (hot tenants), pengiraan rentas wilayah, pengedaran konfigurasi, pengecaman, gagal-buka (fail-open) lawan gagal-tutup (fail-closed), pengepala kuota, audit dan kos.

Soalan penjelasan untuk ditanya

  • Adakah kuota merupakan had tegar, amaran lembut, atau kedua-duanya, dan bolehkah trafik melonjak atau meminjam kapasiti masa hadapan?
  • Dimensi manakah yang memerlukan ketepatan global dan dimensi manakah yang membenarkan anggaran serantau terikat?
  • Apakah sasaran penyebaran dan pengunduran (rollback), dan berapa lama get laluan boleh terputus sambungan sebelum dasar dianggap basi (stale)?
  • Adakah respons melebihi had mesti mendedahkan masa percubaan semula, baki kuota dan peristiwa pengebilan?
  • Titik akhir teras manakah yang mesti diteruskan semasa gangguan pengehad kuota?

Jawapan 30 saat

"Satah kawalan menyimpan dasar yang diluluskan dan diversi, menyusunnya menjadi penghurai get laluan, dan mengedarkan delta. Satah data membuat keputusan pantas setempat; hanya dimensi yang memerlukan ketepatan global memanggil pengehad kongsi. Baldi token menyerap lonjakan dan pembilang diasingkan mengikut penyewa dan titik akhir. Dasar membawa TTL, checksum dan versi pengunduran. Pilih fail-open atau fail-closed mengikut risiko titik akhir, kembalikan maklumat RateLimit standard dan audit sebab keputusan tersebut."

Perbincangan mendalam langkah demi langkah

Langkah 1: Tentukan dasar dan aliran kerja pelepasan

Dasar mengandungi penyewa, aplikasi, titik akhir, tetingkap, kadar, kapasiti, keserentakan, kuota harian, skop wilayah dan keutamaan. Get laluan tidak sepatutnya mentafsir medan produk sewenang-wenangnya; satah kawalan menyusunnya menjadi penghurai yang stabil.

text
policy v42:
  subject: tenant:acme / app:billing
  route: POST /invoices
  rate: 200 requests/second
  burst: 400
  scope: global

Pelepasan memerlukan kelulusan, semakan konflik statik, simulasi trafik dan versi yang ditandatangani. Simpan pengarang, sebab, jangkaan impak dan penunjuk pengunduran; jangan sekali-kali menulis ganti versi yang telah diaudit.

Langkah 2: Pilih pengiraan dan pemecahan (sharding)

Gunakan baldi token tempatan di get laluan untuk lonjakan pendek. Pengehad kongsi boleh mengira dimensi global mengikut penghurai. Untuk kuota harian, gunakan pembilang tetingkap atom atau kuota terpecah, dengan sempadan tetingkap yang jelas dan sumber jam.

Pecahkan mengikut penyewa, aplikasi dan titik akhir supaya satu kunci hangat tidak menjadi hambatan (bottleneck). Penyewa hangat mungkin menerima token berhierarki, kapasiti pra-peruntukan, atau pecahan khusus, dengan rawatan jelas terhadap lebihan penggunaan singkat dan pengebilan akhir.

Langkah 3: Edarkan dasar dengan ketekalan

Strim dasar yang disusun dengan versi dan checksum ke get laluan. Terima hanya versi yang meningkat secara monotonik dan ditandatangani secara sah; muatkan syot kilat (snapshot) sah yang terakhir semasa permulaan. Kemas kini yang hilang menandakan get laluan sebagai basi selepas TTL tamat dan mengeluarkan amaran.

Utamakan pengedaran tempatan dalam sesuatu wilayah. Dasar rentas wilayah menggunakan versi global dan masa berkuat kuasa yang jelas. Pengunduran ialah versi lain, bukan menulis semula sejarah; get laluan melaporkan liputan versi selepas perakuan.

Langkah 4: Kendalikan ketekalan, lonjakan dan keadilan

Pengiraan tepat global menambah kependaman rangkaian dan kos keadaan kongsi. Khaskan penyelarasan kukuh untuk dimensi berisiko tinggi atau kontrak dan benarkan ralat terikat di tempat lain. Selaraskan kapasiti lonjakan dengan keserentakan bahagian belakang; meningkatkan baldi get laluan sahaja masih boleh membebankan perkhidmatan.

Keadilan penyewa mesti melindungi kolam sambungan kongsi. Gandingkan keputusan kuota dengan sekatan keserentakan (bulkheads), panjang giliran dan keutamaan. Rekod sama ada trafik ditolak atau dimasukkan ke dalam giliran dan sebabnya, supaya pelanggan boleh mendiagnosis lebih daripada sekadar satu nombor.

Langkah 5: Tentukan kegagalan dan degradasi

Jika pengehad tidak dapat dihubungi, titik akhir baca sahaja berisiko rendah boleh menggunakan syot kilat tempatan terkini dengan fail-open terikat; operasi tulis, pengebilan dan titik akhir mahal menggunakan fail-closed atau had tempatan yang lebih ketat. Berikan tarikh luput pada setiap keputusan yang terdegradasi dan selaraskan atau tandakan kiraan anggaran selepas pemulihan.

Uji permulaan semula get laluan, hanyutan jam (clock drift), mesej pendua dan gangguan pengedaran. Tolak syot kilat yang rosak dan kekalkan versi sah yang terakhir; konfigurasi kosong tidak boleh bermaksud kuota tanpa had.

Langkah 6: Protokol, audit dan kebolehcerapan

Kembalikan semantik 429 yang stabil pada respons melebihi had dan dedahkan maklumat had, baki dan tetapan semula yang boleh ditafsirkan mengikut RFC 9331. Bagi penyewa yang tidak sepatutnya melihat nombor tepat, gunakan mesej bertingkat. Rekodkan versi dasar, penghurai, wilayah, sumber pembilang, keadaan terdegradasi dan surihan permintaan secara dalaman.

Pantau liputan versi, kependaman keputusan, kadar penolakan, kunci hangat, ralat kiraan, tempoh degradasi dan pengunduran. Nilaikan dasar baharu dalam mod bayang (shadow mode) dan bandingkan perubahan penolakan sebelum pelepasan.

Contoh jawapan yang kukuh

Saya akan menyusun dasar yang diluluskan menjadi penghurai diversi dan mengedarkan delta daripada satah kawalan. Get laluan menggunakan baldi token tempatan untuk kependaman rendah, memanggil perkhidmatan kongsi hanya untuk dimensi yang memerlukan ketepatan global. Dasar membawa tandatangan, TTL, checksum dan versi pengunduran, diasingkan mengikut penyewa, aplikasi, titik akhir dan wilayah. Lakukan degradasi mengikut risiko titik akhir, kembalikan 429 yang stabil dan maklumat RateLimit, serta rekodkan versi, sumber pembilang dan keadaan anggaran.

Kesilapan lazim

  • Menghantar setiap permintaan ke pembilang pusat → kependaman dan domain kegagalan meningkat → buat keputusan tempatan dan selaras secara global mengikut risiko.
  • Menulis ganti konfigurasi → tiada audit atau pengunduran → gunakan kelulusan, tandatangan dan versi monotonik.
  • Menetapkan kadar tanpa lonjakan atau keserentakan → bahagian belakang masih boleh dibanjiri → gandingkan token, sekatan (bulkheads) dan giliran.
  • Sentiasa gagal-buka (fail-open) → penulisan dan pengebilan menjadi tidak terhad → lakukan degradasi mengikut risiko titik akhir.
  • Mengembalikan ralat yang samar-samar → pelanggan tidak dapat melaraskan trafik → sediakan status yang stabil, masa tetapan semula dan sebab yang boleh diaudit.

Soalan susulan dan respons

Soalan susulan 1: Mengapakah tidak memerlukan ketekalan kukuh di semua tempat?

Ketekalan kukuh memerlukan keadaan kongsi dan perjalanan ulang-alik rangkaian, mengurangkan ketersediaan dan meningkatkan kos. Khaskannya untuk dimensi kritikal kontrak atau keselamatan dan terbitkan model ralat terikat di tempat lain.

Soalan susulan 2: Bagaimanakah anda mengendalikan lonjakan rentas wilayah?

Pra-peruntukkan token serantau di bawah had global. Trafik bernilai tinggi boleh meminjam secara ringkas, tetapi rekod kapasiti yang dipinjam dan peraturan pembayaran balik atau pengebilan supaya satu wilayah tidak boleh mendominasi.

Soalan susulan 3: Siapakah yang bertanggungjawab terhadap kelewatan penyebaran?

Get laluan menyimpan versi sah terakhirnya dan menandakan dirinya basi manakala satah kawalan menjejaki liputan. Selepas TTL, ketatkan atau jeda mengikut risiko titik akhir; jangan sekali-kali bertukar menjadi tanpa had secara senyap.

Soalan susulan 4: Bagaimanakah anda membuktikan dasar baharu tidak membahayakan pelanggan?

Jalankan penilaian bayang (shadow evaluation) dan main semula sejarah, bandingkan taburan penolakan, kependaman dan penyewa, tetapkan pintu kawalan automatik, kemudian laksanakan canary secara terhad dengan versi pengunduran satu klik.

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