Topik temu duga representatif

Temu Bual Reka Bentuk Sistem: Mereka Bentuk Get Laluan Kawalan Kemasukan Adaptif

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Reka bentuk get laluan yang menentukan permintaan mana yang boleh menggunakan kapasiti perkhidmatan dan mana yang gagal pantas (fail fast) apabila perkhidmatan atau kebergantungan hampir tepu, sambil mengekalkan kependaman yang boleh diramal untuk tugas kritikal.

Masalah dan skop

Get laluan berada di hadapan beberapa API. Trafik boleh melonjak 20 kali ganda dalam satu minit, manakala pangkalan data, carian dan kebergantungan pihak ketiga mempunyai kapasiti yang berbeza. Reka bentuk pengelasan permintaan, kemasukan, barisan gilir, pelepasan beban, respons terdegradasi dan pemulihan. Kebenaran perniagaan (business authorization), WAF yang lengkap, dan penambahan kapasiti pada kebergantungan yang rosak adalah di luar skop.

Perkara yang dinilai oleh penemu bual

Membezakan pengehadan kadar (rate limiting) daripada perlindungan beban lampau (overload protection). Pengehadan kadar biasanya mengehadkan trafik identiti dalam sesuatu tetingkap masa; kawalan kemasukan memutuskan sama ada sesuatu kerja boleh menggunakan sumber sebenar berdasarkan keserentakan (concurrency), usia barisan gilir, kos, dan kesihatan kebergantungan. Jawapan yang mantap menerangkan apa yang digugurkan, sebabnya, cara kerja berkeutamaan rendah mengelak kebuluran sumber (starvation), dan cara pemulihan mengelakkan lonjakan trafik.

Soalan penjelasan

  • Permintaan manakah yang kritikal, dan yang mana boleh ditangguhkan, dicache, atau dianggarkan?
  • Adakah anda melindungi get laluan, satu kebergantungan, satu penyewa (tenant), atau setiap sempadan sistem?
  • Berapa lama kerja boleh menunggu, dan adakah klien patut mencuba semula, melakukan pengundian (poll), atau menerima hasil kosong?
  • Adakah kapasiti perlu adil merentasi penyewa, rantau, API, atau kelas kos?
  • Kod status, pengepala dan metrik keputusan manakah yang boleh dilihat oleh pemanggil?

Rangka kerja jawapan 30 saat

"Saya akan mengelaskan permintaan mengikut metadata laluan dipercayai, penyewa, dan kos, kemudian melakukan semakan ketat terhadap keserentakan dan belanjawan sebelum meletakkan kerja yang diterima ke dalam barisan terikat yang dipisahkan mengikut keutamaan dan penyewa. Pengawal menyelaraskan sasaran keserentakan daripada kerja yang sedang diproses (in-flight), usia barisan gilir, kadar ralat, dan isyarat kebergantungan. Semasa beban lampau, ia menolak kerja bernilai rendah atau yang boleh dicuba semula terlebih dahulu dan memperuntukkan kapasiti untuk permintaan kritikal. Operasi yang boleh dicache atau dianggarkan menggunakan laluan terdegradasi, manakala penolakan menyertakan masa percubaan semula. Pemulihan menggunakan peningkatan berperingkat, pajakan (leases), dan kuar terkawal supaya percubaan semula tidak menghasilkan beban lampau kedua."

Reka bentuk terperinci langkah demi langkah

Get laluan mengesahkan saiz permintaan, belanjawan tamat masa (timeout budget), dan kuota penyewa, kemudian memetakan permintaan kepada label criticality, cost, retryability, dan dependency. Konfigurasi laluan yang dipercayai membekalkan label; klien tidak boleh mengisytiharkan keutamaan sendiri. Trafik kesihatan dan pengurusan menggunakan kolam rizab supaya trafik data tidak dapat menghabiskan satah kawalan (control plane).

Kekalkan had kerja dalam proses, had barisan gilir, dan belanjawan tamat masa bagi setiap API dan kebergantungan. Semafor atau pajakan melindungi sumber sebenar; barisan gilir dihadkan dan bukannya menyembunyikan beban lampau dalam tunggakan (backlog) tanpa had. Gunakan belanjawan hanya selepas kemasukan diluluskan, dan lepaskan pajakan apabila berlaku pembatalan atau tamat masa. Permintaan penstriman memerlukan belanjawan sambungan dan bait yang berasingan supaya satu penstriman yang panjang tidak memenuhi setiap slot.

Penjadual memilih kerja mengikut keutamaan, pemberat penyewa, dan usia. Kerja kritikal menerima tempahan keserentakan minimum; kerja berkeutamaan rendah boleh digugurkan atau ditangguhkan, dengan penuaan (aging) untuk mengelakkan kebuluran sumber. Lonjakan daripada satu penyewa tidak boleh meminjam tempahan penyewa lain. Merentasi rantau, keputusan pantas setempat boleh menerima ralat pembilang yang terikat daripada menambah kebergantungan koordinasi global yang rapuh.

Bagi setiap tetingkap masa pendek, pengawal melaraskan sasaran keserentakan: kurangkannya apabila kependaman p95, usia barisan gilir, atau ralat hiliran melebihi ambang; tingkatkannya perlahan-lahan apabila stabil. Isyarat yang lancar dan histeresis menghalang ayunan pada ambang. Percubaan semula klien bukan isyarat kesihatan. Jejaki amplifikasi percubaan semula dan hadkan trafik pulangan dengan Retry-After, jitter, dan belanjawan percubaan semula.

Pilih pelepasan beban mengikut semantik permintaan. Syor, analitik, dan pratonton boleh mengembalikan hasil cache atau anggaran; operasi menulis, pembayaran, dan perubahan kebenaran biasanya gagal pantas dan memerlukan percubaan semula yang selamat. Respons terdegradasi membawa versi, cap masa, dan kesegaran (freshness) dan bukannya berpura-pura lengkap. Get laluan tidak sepatutnya menggugurkan kesan sampingan yang tidak boleh diulang jika ia tidak memahaminya.

Apabila kebergantungan tamat masa atau menghasilkan ralat, kolam pengasingan mengehadkan sambungan, keserentakan, dan belanjawan percubaan semulanya; pemutus litar (circuit breaker) hanya membenarkan kuar terkawal. Respons bercache dan statik menggunakan kolam terasing. Sekiranya berjaya, tingkatkan trafik secara beransur-ansur. Rekod keputusan kemasukan, versi dasar, sebab penolakan, masa menunggu barisan, dan isyarat kebergantungan supaya timbunan respons 429 kekal boleh didiagnosis.

Pantau kadar kemasukan, kadar penolakan mengikut keutamaan dan penyewa, usia barisan gilir tertua, kerja dalam proses, kependaman p95/p99, ralat hiliran, amplifikasi percubaan semula, kesegaran terdegradasi, dan kecerunan pemulihan. Selaraskan belanjawan sumber dengan sambungan sebenar, bebenang (threads), sambungan pangkalan data, dan tugas barisan gilir. Suntik lonjakan trafik, kebergantungan yang perlahan, konfigurasi dasar yang salah, kehilangan pengawal, pemisahan rantau, dan ribut ulangan (replay storms).

Contoh jawapan berkualiti tinggi

"Di get laluan, saya akan menyertakan label kekritikalan, kos, kebolehan cuba semula, dan kebergantungan yang dipercayai. Setiap API dan kebergantungan mempunyai keserentakan terikat, barisan terikat, dan kapasiti rizab; penjadual menggunakan keutamaan, pemberat penyewa, dan penuaan. Pengawal melaraskan sasaran keserentakan daripada kependaman p95, usia barisan gilir, dan ralat hiliran dengan histeresis. Di bawah beban lampau, ia menolak kerja bernilai rendah atau yang boleh dicuba semula terlebih dahulu dan mengekalkan kapasiti untuk operasi menulis yang kritikal; pratonton boleh mengembalikan data cache berserta kesegaran.

Setiap penolakan menyertakan sebab yang stabil, Retry-After, dan ID permintaan. Kolam pengasingan, belanjawan percubaan semula, dan kuar terkawal menghalang kegagalan melata; pemulihan ditingkatkan secara berperingkat. Metrik merangkumi keadilan, amplifikasi percubaan semula, kesegaran, dan kecerunan pemulihan, manakala suntikan kerosakan menguji kehilangan pengawal, pemisahan rantau, dan ribut ulangan. Kontrak utamanya adalah kependaman laluan kritikal yang boleh diramal semasa beban lampau, bukannya menunggu tanpa had untuk setiap permintaan."

Kesilapan lazim

  • Hanya menambah pengehad QPS tetap → kesesakan mungkin berpunca daripada sambungan, CPU, atau kebergantungan → gabungkan isyarat keserentakan, barisan gilir, dan kesihatan.
  • Menggunakan barisan gilir tanpa had → kependaman melonjak dan jurang kapasiti kekal tersembunyi → hadkan barisan gilir dan tolak secara eksplisit.
  • Memberi keutamaan sama rata kepada setiap permintaan → kerja bernilai rendah menyingkirkan laluan kritikal → peruntukkan kapasiti semantik dan lakukan penuaan pada kerja.
  • Membenarkan klien melaporkan keutamaan sendiri → penyerang memintas perlindungan → kelaskan daripada dasar laluan yang dipercayai.
  • Mencuba semula tanpa belanjawan semasa beban lampau → amplifikasi melumpuhkan kebergantungan → gunakan belanjawan, jitter, dan Retry-After.
  • Mengembalikan data lapuk tanpa kesegaran → pengguna tersilap menganggapnya sebagai data terkini yang benar → sertakan versi, cap masa, dan sumber.
  • Melepaskan semua trafik serta-merta → ribut ulangan membebankan proses pemulihan → tingkatkan secara berperingkat dengan kuar terkawal.
  • Memerlukan pembilang global yang tepat → laluan perlindungan mendapat lebih banyak kebergantungan kegagalan → buat keputusan pantas setempat dengan ralat terikat.

Soalan susulan dan jawapan

Soalan susulan 1: Bagaimanakah kawalan kemasukan berbeza daripada pengehadan kadar?

Pengehadan kadar mengehadkan trafik identiti dalam sesuatu tetingkap masa. Kawalan kemasukan memutuskan sama ada kerja boleh menggunakan sumber sebenar berdasarkan keserentakan, masa menunggu barisan, kos, dan kesihatan kebergantungan. Kedua-duanya boleh wujud bersama, tetapi had QPS tetap bukan kawalan kemasukan sumber.

Soalan susulan 2: Bagaimanakah anda menghalang penyewa berkeutamaan rendah daripada menyingkirkan penyewa kritikal?

Rizabkan kolam atau kuota minimum untuk penyewa kritikal, kemudian jadualkan kapasiti kongsi mengikut pemberat. Berikan setiap penyewa belanjawan maksimum supaya lonjakan tidak boleh meminjam kuota rizab selama-lamanya.

Soalan susulan 3: Mengapa tidak bariskan (queue) segalanya?

Selepas tarikh akhir perniagaan (business deadline), menunggu hanya akan menghasilkan tamat masa dan percubaan semula dan bukannya kerja yang berguna. Barisan terikat menjadikan permintaan berlebihan jelas dan memberikan maklum balas kepada pemanggil.

Soalan susulan 4: Isyarat manakah yang memacu pengawal?

Sekurang-kurangnya kependaman p95/p99, kerja dalam proses, usia barisan gilir tertua, kadar ralat kebergantungan, dan penggunaan sumber. Lancarkan isyarat tersebut, tambah histeresis, dan asingkan trafik percubaan semula klien daripada permintaan normal yang sihat.

Soalan susulan 5: Bolehkah operasi menulis kritikal didegradasi?

Hanya jika semantik perniagaan membenarkan kemasukan barisan gilir (enqueue) secara tahan lasak yang diikuti oleh penyiapan tak segerak. Pembayaran, kebenaran dan inventori tidak boleh mengembalikan kejayaan palsu; ia mesti gagal dengan selamat dan dicuba semula dengan keidempoteman (idempotency).

Soalan susulan 6: Bagaimanakah anda mengesahkan bahawa pemulihan tidak akan menyebabkan beban lampau semula?

Suntik pemulihan kebergantungan, tunggakan kerja, dan percubaan semula klien, kemudian perhatikan kadar peningkatan, tempahan, usia barisan gilir, dan ralat. Tetapkan peningkatan maksimum, tempoh bertenang (cooldown), dan suis jeda manual.

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