Topik temu duga representatif

Temu Duga Reka Bentuk Sistem: Reka Bentuk Sistem Penemuan Perkhidmatan

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Reka bentuk sistem penemuan perkhidmatan untuk 2,000 perkhidmatan dalaman dan 100,000 tika dinamik merentasi 3 rantau. Penggunaan bertahap boleh menggantikan 10,000 titik akhir dalam masa 2 minit. Selepas penarikan diri secara anggun diperhatikan, trafik baharu harus berhenti dalam masa 3 saat; kegagalan ketara (hard failures) harus dikesan dalam masa 15 saat. Panggilan sedia ada mesti diteruskan semasa gangguan satah kawalan penemuan selama 10 minit. Terangkan pendaftaran, pemeriksaan kesihatan, laluan pertanyaan dan tolak, caching, ketekalan, kegagalan berbilang rantau, dan pengesahan.

Masalah dan Skop

Reka bentuk sistem penemuan perkhidmatan dalaman untuk 2,000 perkhidmatan logik dan 100,000 tika dinamik merentasi 3 rantau. Penjadualan semula kontena, penskalaan automatik, dan penggunaan bertahap secara berterusan mengubah alamat. Satu penggunaan berskala besar boleh menggantikan 10,000 titik akhir dalam masa 2 minit. Pemanggil menggunakan pelbagai bahasa, jadi setiap pasukan tidak boleh dijangka untuk mengekalkan SDK penemuan yang canggih.

Masalah ini memisahkan dua tarikh akhir. Selepas satah kawalan memerhatikan peralihan sengaja sesuatu tika keluar dari perkhidmatan, p99 daripada pemerhatian itu hingga penghentian trafik baharu adalah paling banyak 3 saat. Jika sesuatu proses atau nod hilang tanpa notis, p99 pengesanan kegagalan ketara adalah paling banyak 15 saat. Panggilan sedia ada harus diteruskan daripada titik akhir terakhir yang diketahui semasa gangguan satah kawalan penemuan selama 10 minit. Ini tidak membayangkan bahawa tika baharu menjadi kelihatan atau tika yang dicache kekal hidup semasa gangguan.

Jumlah perkhidmatan, bilangan tika, bilangan rantau, saiz penggunaan, dan SLO adalah andaian temu duga. Skop merangkumi pendaftaran, pajakan, status kesihatan, pertanyaan titik akhir dan penghantaran tokokan, caching, penyaliran (draining), tingkah laku berbilang rantau, dan pengesahan. Pengimbangan permintaan hanya dirangkumi setakat yang diperlukan oleh penemuan; API perniagaan, satah data jaring perkhidmatan (service-mesh) yang lengkap, dan DNS awam adalah di luar skop. Ini adalah system-design kerana tugas teras merangkumi satah kawalan, proksi, isyarat kesihatan, dan tingkah laku trafik hujung ke hujung.

Perkara yang Dinilai oleh Penemu Duga

Isyarat pertama ialah memisahkan pendaftaran, penemuan, keputusan kesihatan, dan penghalaan. Pendaftaran merekodkan siapa yang mendakwa sedang berjalan di mana. Logik kesihatan memutuskan sama ada sesuatu tika patut menerima trafik sekarang. Penemuan menghantar calon ke pihak pemanggil. Proksi atau klien memilih satu calon. Melukis keempat-empatnya sebagai satu pangkalan data mengabaikan kependaman penyebaran dan sempadan kegagalan.

Isyarat kedua ialah pemisahan satah kawalan dan satah data. Jika setiap permintaan perniagaan menanyakan daftar secara segerak, kelembapan daftar akan menjadi gangguan seluruh tapak. Reka bentuk yang kukuh mengekalkan snapshot berversi dalam proksi dan menerima perubahan di latar belakang. Semasa kegagalan satah kawalan, satah data menggunakan set terakhir yang diketahuinya dan mengendalikan titik akhir usang dengan tamat masa sambungan yang singkat, percubaan semula yang terhad, dan penyingkiran pasif tempatan.

Isyarat ketiga ialah mengakui bahawa maklumat penemuan sentiasa boleh menjadi usang. TTL DNS, cache proksi, kelewatan pemantauan (watch delay), pengesanan kegagalan, dan penutupan bertahap mencipta selang masa. Jawapan yang kukuh mentakrifkan peristiwa mana yang memulakan setiap jam, menetapkan SLO berasingan untuk penarikan diri secara sengaja dan kegagalan ketara, serta memperuntukkan kadens probe, ambang, dan penyebaran. "Ketekalan kukuh menghalang panggilan ke tika mati" mengabaikan pemetakan (partitions) dan tika yang gagal serta-merta selepas bacaan.

Akhir sekali, penemu duga mencari skala dan pertimbangan operasi. Jika 100,000 tika memperbaharui pajakan secara langsung setiap 10 saat, daftar akan menerima 10,000 pembaharuan sesaat sebelum perubahan pelaksanaan dan sebaran pemantauan (watch fanout). Reka bentuk mesti membendung penguatan penulisan (write amplification), ribut penyambungan semula, snapshot penuh, domain kegagalan serantau, dan semakan kesihatan yang buruk berbanding sekadar menamakan Consul, etcd, atau Kubernetes.

Soalan untuk Dijelaskan Sebelum Menjawab

  • Apakah sumber kebenaran pendaftaran? Jika orkestrator memiliki kitaran hayat Pod, pengawal harus menghasilkan pendaftaran. Ejen tempatan dengan identiti beban kerja boleh mendaftarkan VM atau proses luaran. Membenarkan pendaftaran kendiri tanpa pengesahan akan mencemarkan katalog.
  • Bilakah jam 3 saat bermula? Di sini ia bermula apabila satah kawalan menerima READY ke DRAINING atau tidak sedia. Jika aplikasi membeku sebelum melaporkan, pengesanan kegagalan ketara yang akan mengendalikannya.
  • Berapa banyak penyingkiran palsu yang boleh ditoleransi oleh sasaran 15 saat? Tiga kegagalan berturut-turut mengurangkan ralat kehilangan paket sementara, tetapi selang 5 saat ditambah tamat masa menggunakan hampir keseluruhan belanjawan masa. Kadar ralat pasif, kapasiti ganti serantau, dan tetingkap pengesahan mengubah pilihan ini.
  • Adakah pemanggil memerlukan alamat tika atau alamat perkhidmatan yang stabil? DNS ditambah pengimbangan beban platform adalah paling mudah untuk VIP yang stabil. Proksi atau penemuan klien lebih sesuai apabila pemanggil memerlukan metadata versi, rantau, atau syard (shard).
  • Adakah gangguan satah kawalan gagal secara terbuka (fail open) atau tertutup (fail closed)? Perkhidmatan dalaman biasa boleh diteruskan daripada snapshot terakhir yang diketahui. Pembatalan keselamatan dan pengasingan tegar tidak boleh bergantung pada cache penemuan yang usang; lapisan identiti dan kebenaran bebas harus menolaknya.
  • Adakah failover merentas rantau secara automatik dibenarkan? Bacaan tanpa keadaan (stateless reads) boleh melakukan failover mengikut dasar. Residensi data, keadaan penulis tunggal, atau kos merentas rantau yang tinggi mesti menyekat set sasaran secara eksplisit.

Jawapan 30 Saat

"Saya akan membina satah kawalan serantau dan satah data tempatan. Orkestrator atau ejen yang disahkan menulis tika ke katalog bersyard dengan status STARTING, READY, DRAINING, UNHEALTHY, dan EXPIRED. Hanya READY yang boleh dihala. Penutupan anggun memasuki DRAINING sebelum sambungan disalirkan. Pemimpin serantau menyusun perubahan dengan semakan monotonik. Peringkat pengedaran menolak delta ke 5,000 proksi nod, dan proksi mengambil snapshot penuh apabila ia mengesan jurang semakan.

Permintaan perniagaan menggunakan proksi tempatan atau VIP yang stabil dan tidak pernah menanyakan daftar secara segerak. Semasa gangguan, proksi mengekalkan snapshot terakhir dan menyingkirkan sementara titik akhir yang buruk menggunakan tamat masa sambungan, percubaan semula terhad, dan ralat pasif. Kesihatan memisahkan permulaan, kesediaan, keaktifan, dan isyarat pasif. Probe aktif 5 saat dengan tiga kegagalan menyasarkan pengesanan ranap kira-kira 15 saat. Saya akhiri dengan suntikan kerosakan untuk pelaksanaan, pemetakan, pemantauan yang terputus, ribut penyambungan semula, dan probe yang rosak, sambil mengukur kependaman penyingkiran, permintaan usang, dan penumpuan."

Perincian Langkah demi Langkah

Langkah 1: Tentukan model data dan mesin keadaan

Kunci katalog merangkumi sekurang-kurangnya ruang nama, nama perkhidmatan, dan nama port supaya persekitaran dan protokol tidak bertembung. Titik akhir mengandungi ID tika yang stabil, alamat, rantau, zon, versi, pemberat, label keupayaan, status, tamat tempoh pajakan, dan semakan. Hanya dimensi label yang telah ditentukan dibenarkan; data kekardinalan tinggi yang sewenang-wenangnya bukan sebahagian daripada satah penemuan.

Mesin keadaan membawa lebih banyak makna daripada satu Boolean healthy. STARTING tidak menerima sebarang trafik. READY menerima trafik baharu. DRAINING menghentikan permintaan baharu semasa sambungan sedia ada selesai. UNHEALTHY mencerminkan keputusan kegagalan aktif atau pasif. EXPIRED bermaksud pajakan tidak diperbaharui. Setiap peralihan merekodkan sebab, sumber, dan semakan monotoniknya supaya kemas kini yang tidak mengikut susunan boleh diaudit.

Kemas kini untuk satu titik akhir dinyahduplikasi mengikut ID tika dan penjanaan permulaan. Pajakan yang tertangguh daripada proses lama tidak boleh menghidupkan semula alamat yang telah diganti. Jika orkestrator adalah autoritatif, pengawal memerhatikan kitaran hayat yang diingini dan kesediaan sebenar. Dengan pendaftaran kendiri, penulis mengesahkan identiti sebagai beban kerja dan hanya boleh mengubah suai perkhidmatan dan rekod tikanya sendiri.

Langkah 2: Pilih corak penemuan tanpa menyalin kerumitan ke setiap bahasa

DNS ditambah VIP yang stabil berfungsi apabila pemanggil hanya memerlukan nama perkhidmatan dan platform telah pun mengendalikan titik akhir dan kesihatan. Mengembalikan alamat tika secara langsung melalui DNS adalah mudah, tetapi TTL mencipta pertukaran antara beban pertanyaan dan masa keusangan. Klien yang mengabaikan TTL pendek meningkatkan risiko.

Penemuan pihak klien boleh memilih mengikut versi, zon, dan beban, tetapi setiap bahasa mesti melaksanakan pengendalian pemantauan, caching, pengimbangan, percubaan semula, dan peningkatan selamat. Oleh kerana masalah ini mempunyai pemanggil pelbagai bahasa, utamakan penemuan pihak pelayan melalui proksi nod tempatan atau proksi platform sedia ada. Aplikasi memanggil alamat tempatan yang stabil, dan proksi memiliki set titik akhir serta pilihan bahagian belakang. Satu lompatan tempatan tambahan memberikan semantik seragam dan peningkatan pantas.

Jika setiap beban kerja sudah berjalan pada Kubernetes, Service, DNS, dan EndpointSlice biasanya merangkumi penemuan asas. Membina daftar lain akan menduplikasi platform. Perkenalkan satah kawalan berasingan hanya untuk keperluan sebenar merentas VM, merentas kluster, penghalaan lanjutan, atau dasar, dan utamakan penggunaan kebenaran titik akhir orkestrator.

Langkah 3: Susun penulisan sambil membenarkan bacaan usang

Gunakan 3 atau 5 replika katalog setiap rantau, menggunakan pemimpin konsensus untuk pendaftaran dan peralihan keadaan. Lakukan pembahagian syard mengikut kunci perkhidmatan atau penyewa supaya satu pemimpin global tidak memiliki semua 100,000 tika. Jangan mereplikasi setiap penulisan secara segerak merentasi rantau; pemetakan jauh tidak seharusnya menyekat rantau yang sihat. Lapisan global menyegerakkan dasar perkhidmatan dan destinasi failover yang dibenarkan.

Penulisan yang berjaya bermakna katalog serantau menerima semakan. Ini tidak bermakna setiap proksi telah melihatnya. Pengedar menolak delta yang tersusun. Proksi mengekalkan snapshot lengkap dan semakan terakhirnya. Ia menggunakan semakan yang bersebelahan, tetapi mengambil snapshot penuh untuk perkhidmatan tersebut jika ia mengesan jurang, gagal pengesahan, atau menyambung semula selepas pengekalan delta telah tamat tempoh. Penggantian snapshot adalah atomik supaya bahagian lama dan baharu tidak pernah bercampur.

Laluan bacaan menukar keusangan terhad untuk ketersediaan. Proksi merekodkan usia snapshot, hubungan terakhir satah kawalan, dan kelengahan pemantauan. Ia memberi amaran di luar belanjawan usia biasa tetapi masih menggunakan set terakhir semasa gangguan 10 minit yang dinyatakan. Jika setiap titik akhir yang diketahui gagal, ia mengembalikan hasil tiada-bahagian-belakang yang eksplisit daripada memintas dasar secara senyap ke mana-mana rantau.

Langkah 4: Pisahkan penarikan diri secara sengaja daripada pengesanan kegagalan ketara

Untuk penutupan anggun, aplikasi terlebih dahulu menarik balik kesediaan. Katalog memasuki DRAINING, dan proksi berhenti memilih titik akhir tersebut selepas penyebaran. Proses menunggu melalui tempoh penyaliran sambungan maksimum sebelum keluar. Aplikasi ini juga berhenti menerima kerja baharu kerana penyebaran penemuan tidak berlaku serta-merta; proksi lama atau sambungan jangka panjang masih boleh memegang alamatnya.

Kegagalan ketara tidak menghantar sebarang isyarat. Dengan probe aktif setiap 5 saat dan penyingkiran selepas 3 kegagalan berturut-turut, kegagalan sejurus selepas probe berjaya boleh menggunakan hampir 15 saat dalam pensampelan sahaja, sebelum tamat masa probe dan penyebaran. Memenuhi p99 15 saat memerlukan peruntukan tamat masa, ketidakstabilan penjadual (scheduler jitter), dan penghantaran bersama-sama atau memendekkan selang waktu. Proksi boleh menyingkirkan sementara titik akhir selepas penolakan sambungan, tamat masa, atau kadar ralat tempatan yang tinggi, tetapi masalah rangkaian satu pemanggil tidak boleh membatalkan pendaftarannya secara global.

Permulaan, kesediaan, dan keaktifan juga berbeza. Permulaan melindungi proses pemulaan yang perlahan. Kegagalan kesediaan menghentikan trafik. Kegagalan keaktifan mencetuskan mula semula. Meletakkan pangkalan data yang dikongsi dalam ujian keaktifan setiap tika boleh memulakan semula keseluruhan perkhidmatan semasa gangguan pangkalan data dan menguatkan tekanan. Kebergantungan kritikal boleh mempengaruhi kesediaan, tetapi pemeriksaan memerlukan tamat masa pendek, jitter, dan perlindungan kapasiti untuk mengelakkan ribut probe.

Langkah 5: Kira beban penulisan, perubahan, dan sebaran

Jika 100,000 tika memperbaharui secara langsung setiap 10 saat, keadaan mantap ialah 10,000 pembaharuan sesaat. Utamakan pemantauan orkestrator berbanding denyutan jantung bagi setiap tika, atau agregatkan pembaharuan melalui ejen nod dengan jitter rawak. Tamat tempoh pajakan kekal sebagai jaring keselamatan untuk rekod terbiar, bukan laluan penarikan diri yang normal.

Menggantikan 10,000 titik akhir dalam 2 minit secara purata menghasilkan kira-kira 83 penambahan dan 83 penyingkiran sesaat, atau sekitar 167 perubahan keahlian. Menghantar setiap perubahan secara bebas kepada kesemua 5,000 proksi nod akan mencipta sebanyak kira-kira 835,000 penghantaran sesaat. Langganan sebenar menapis kepada perkhidmatan yang diperlukan oleh setiap proksi, menggabungkan (coalesce) perubahan perkhidmatan yang sama dalam tetingkap pendek, dan menggunakan pengedaran hierarki. Penggabungan tidak boleh menjadikan SLO penarikan diri 3 saat menjadi kelompok satu minit.

Snapshot penuh juga memerlukan belanjawan. Pada saiz bersiri ilustrasi sebanyak 256 bait bagi setiap titik akhir, snapshot 100,000 titik akhir global adalah kira-kira 24.4 MiB. Proksi biasa hanya mengambil perkhidmatan yang dilanggan, bukan katalog global. Penyambungan semula menggunakan pengunduran eksponen (exponential backoff) dengan jitter, dan pengedar mengekalkan log delta yang pendek supaya 5,000 proksi tidak meminta snapshot penuh secara serentak selepas pemulihan.

Langkah 6: Tentukan sempadan rantau dan keselamatan

Tika mendaftar di rantau tempatannya secara lalai, dan panggilan mengutamakan titik akhir READY di rantau dan zon yang sama. Jika katalog serantau kehilangan kuorum, ia menolak penulisan baharu manakala proksi tempatan terus membaca cache mereka. Rantau lain tidak boleh menandakan titik akhir tersebut sihat atau menulis ganti kebenaran tempatan berdasarkan probe jauh.

Dasar perkhidmatan mengisytiharkan sama ada penghalaan merentas rantau dibenarkan, tingkah laku baca sahaja atau boleh ditulis, susunan sasaran, had kapasiti, dan sempadan data. Dasar eksplisit mencetuskan failover global. Bacaan tanpa keadaan boleh bertukar dengan cepat; proksi untuk pangkalan data penulis tunggal mesti terlebih dahulu menetapkan pemindahan pemilikan. Penemuan mengembalikan alamat calon dan tidak boleh menggantikan protokol ketekalan perniagaan.

Pendaftaran, pembatalan pendaftaran, dan pemantauan memerlukan identiti beban kerja dan keistimewaan paling sedikit, dengan perubahan katalog dalam log audit. Proksi mengesahkan satah kawalan, dan perkhidmatan sensitif boleh menggabungkan penemuan dengan TLS bersama (mutual TLS). Label titik akhir bukan tuntutan kebenaran yang dipercayai; pemanggil masih mengesahkan identiti perkhidmatan dan kebenaran pada masa sambungan atau permintaan.

Langkah 7: Sahkan dengan garis masa dan suntikan kerosakan

Uji penggantian bertahap terlebih dahulu. Tika lama menarik balik kesediaan. Rekodkan apabila katalog menerima semakan, proksi menggunakannya, permintaan baharu terakhir tiba, dan proses keluar. Tika baharu memasuki set hanya selepas permulaan dan kesediaan. Pastikan penyebaran penarikan aktif p99 di bawah 3 saat, penyelesaian kerja dalam penerbangan, dan sifar trafik ke tika yang belum sedia.

Kemudian matikan proses tanpa pembatalan pendaftaran dan sahkan bahawa probe 5 saat, ambang kegagalan, dan pengedaran bersama-sama memenuhi p99 15 saat. Suntik satu kerosakan rangkaian proksi, kegagalan seluruh nod, pengikut katalog yang ketinggalan, pertukaran pemimpin, kehilangan kuorum serantau, jurang delta, snapshot yang rosak, dan gangguan satah kawalan selama 10 minit. Pemulihan menyambung semula dengan jitter dan tidak menyebabkan rempuhan snapshot penuh.

Metrik pengeluaran merangkumi kadar pendaftaran dan pembaharuan, kependaman penulisan katalog, kiraan READY bagi setiap perkhidmatan, ayunan kesihatan (health flapping), kependaman probe, kelengahan pemantauan, usia snapshot, jurang semakan, sandaran snapshot penuh, penyambungan semula proksi, permintaan baharu ke titik akhir yang dialih keluar, kegagalan sambungan titik akhir usang, dan hasil tiada-bahagian-belakang. Garis masa trafik membuktikan penyebaran; papan pemuka satah kawalan yang hijau sahaja tidak mencukupi.

Contoh Jawapan yang Kukuh

"Saya memisahkan kebenaran pendaftaran, keputusan kesihatan, penghantaran penemuan, dan penghalaan permintaan. Kumpulan konsensus serantau menerima perubahan tika yang disahkan. Setiap rekod mempunyai kunci perkhidmatan, ID tika, penjanaan permulaan, alamat, rantau, versi, status, pajakan, dan semakan. Hanya READY memasuki set yang boleh dihala. Penutupan beralih ke DRAINING, menghentikan trafik baharu, menyalirkan, kemudian keluar. Kegagalan ketara menggunakan probe dan tamat tempoh pajakan. Ralat pasif menyingkirkan secara tempatan dan tidak serta-merta menjadi kebenaran global.

Oleh kerana pemanggil menggunakan pelbagai bahasa, saya tidak akan membiarkan setiap proses memantau daftar. Lima ribu proksi nod melanggan hanya perkhidmatan yang diperlukan, mengekalkan snapshot penuh dan semakan monotonik, menggunakan delta bersebelahan, dan mengambil semula satu perkhidmatan jika terdapat jurang. Permintaan menggunakan proksi tempatan dan tidak pernah menanyakan satah kawalan secara segerak. Semasa gangguan 10 minit, proksi menggunakan titik akhir terakhir yang diketahui dengan tamat masa sambungan pendek, percubaan semula terhad, dan penyingkiran tempatan. Tika baharu tidak kelihatan dan alamat lama mungkin usang, jadi kos tersebut adalah metrik eksplisit.

Seratus ribu tika yang memperbaharui setiap 10 saat akan menjana 10,000 penulisan sesaat, jadi saya lebih suka pemantauan orkestrator atau pengagregatan nod. Menggantikan 10,000 titik akhir dalam 2 minit menghasilkan kira-kira 167 perubahan tambah dan alih keluar sesaat. Tapis mengikut langganan, gabungkan secara ringkas, dan sebar secara hierarki tanpa menggunakan belanjawan penarikan 3 saat. Memeriksa setiap 5 saat dan memerlukan 3 kegagalan sudah menghampiri 15 saat, jadi tamat masa dan penyebaran adalah sebahagian daripada belanjawan.

Saya mengesahkan melalui garis masa trafik: tiada permintaan baharu dalam masa 3 saat selepas penarikan diri diterima, dan titik akhir yang ranap teruk meninggalkan set calon dalam masa 15 saat. Trafik sedia ada berterusan semasa pertukaran pemimpin, pemetakan serantau, dan henti satah kawalan selama 10 minit. Akhir sekali, 5,000 proksi menyambung semula dengan jitter, mengisi jurang semakan, dan menumpu tanpa membebankan katalog."

Kesilapan Biasa

  • Menanyakan daftar sebelum setiap permintaan → kelewatan atau kegagalan satah kawalan memasuki laluan perniagaan → cache titik akhir berversi secara tempatan dan terima perubahan di latar belakang.
  • Menggunakan satu Boolean healthy semantik permulaan, penerimaan trafik, penyaliran, dan mula semula bercampur aduk → gunakan mesin keadaan eksplisit dengan sumber peralihan.
  • Memulakan semula semasa kegagalan kesediaan → gangguan hiliran boleh memulakan semula keseluruhan kumpulan perkhidmatan → kesediaan menghentikan trafik; keaktifan hanya merangkumi kegagalan tempatan yang tidak dapat dipulihkan.
  • Menganggap TTL DNS yang pendek menghapuskan data usang → cache klien, penyebaran, dan pengesanan masih mencipta selang masa sementara beban pertanyaan meningkat → ukur pertukaran TTL dan kekalkan ketahanan satah data.
  • Membenarkan pendaftaran kendiri tanpa pengesahan → titik akhir yang silap atau berniat jahat boleh menerima trafik dalaman → gunakan kebenaran orkestrator atau identiti beban kerja yang terhad.
  • Membiarkan setiap proksi melanggan katalog global → penggunaan dan penyambungan semula mencipta ribut sebaran dan snapshot → tapis mengikut perkhidmatan, edarkan secara hierarki, buat versi delta, dan gunakan jitter untuk penyambungan semula.
  • Mereplikasi setiap denyutan jantung secara kukuh merentasi rantau → kependaman jauh atau pemetakan menyekat rantau yang sihat → susun penulisan secara serantau dan selaraskan hanya dasar dan metadata failover yang dibenarkan.
  • Menganggap kejayaan penemuan sebagai kejayaan permintaan → titik akhir boleh gagal serta-merta selepas carian → protokol panggilan masih memerlukan tamat masa sambungan, percubaan semula terhad, pemutus litar (circuit breaking), dan keidempotanan.
  • Memeriksa setiap kebergantungan untuk kesihatan → satu gangguan yang dikongsi mengalih keluar semua tika sekaligus → periksa hanya syarat penerimaan trafik kritikal dengan tamat masa pendek dan jitter.

Soalan Susulan dan Jawapan

Susulan 1: Mengapakah tidak membiarkan semua 100,000 tika menggunakan penemuan pihak klien secara langsung?

Penemuan pihak klien menghapuskan satu lompatan dan membolehkan penghalaan terperinci, tetapi ia menyalin pemantauan, cache, pembaikan semakan, pengimbangan, penyingkiran, dan peningkatan ke dalam setiap bahasa dan proses. Dengan pasukan pelbagai bahasa, proksi nod mengurangkan 100,000 sambungan klien kepada kira-kira 5,000 tika satah data. Satu masa jalanan matang tunggal dengan belanjawan kependaman yang sangat ketat mungkin mewajarkan SDK wajib, tetapi ia masih memerlukan ujian kepatuhan protokol dan peningkatan yang dikuatkuasakan.

Susulan 2: Mengapakah selamat untuk menggunakan titik akhir lama semasa gangguan satah kawalan?

Snapshot terakhir membolehkan tika yang masih hidup diteruskan, dengan kos terlepas penambahan, penarikan balik, dan perubahan failover. Proksi mendedahkan usia snapshot, menggunakan tamat masa pendek dan ralat pasif untuk mengurangkan panggilan ke alamat mati, serta mengehadkan percubaan semula. Pembatalan keselamatan tidak boleh menunggu penyebaran cache penemuan; lapisan identiti dan kebenaran bebas gagal secara tertutup. Sebaik sahaja usia snapshot maksimum khusus perkhidmatan tamat tempoh, dasarnya boleh menurun taraf atau menolak daripada menggunakan satu peraturan global.

Susulan 3: Adakah probe 5 saat dan 3 kegagalan benar-benar memenuhi 15 saat?

Tidak semestinya. Kegagalan sejurus selepas pemeriksaan berjaya mungkin menggunakan hampir 15 saat untuk tiga sampel yang gagal, dan tamat masa, ketidakstabilan penjadualan, serta penyebaran titik akhir akan menambah masa lagi. Untuk memenuhi p99, pendekkan selang waktu, pastikan tamat masa berada di bawah selang waktu, dan gunakan penolakan sambungan atau isyarat pasif lain untuk penyingkiran tempatan yang lebih pantas. Suntikan kerosakan mesti mengukur taburan daripada permintaan berjaya terakhir hingga laluan baharu terakhir; mendarabkan nilai konfigurasi bukanlah bukti.

Susulan 4: Mengapakah penggunaan bertahap memerlukan DRAINING berbanding pemadaman serta-merta?

Pemadaman hanya menghentikan pemanggil yang telah melihat senarai baharu. Ia tidak mengendalikan cache lama, keep-alive, RPC panjang, atau kerja dalam baris gilir. DRAINING mengalih keluar titik akhir daripada calon permintaan baharu sementara proses kekal untuk tempoh penyaliran terhad. Aplikasi ini juga berhenti menerima kerja baharu, dan tamat masa panggilan berada dalam had ihsan penamatan platform. Pengesahan menjejaki permintaan baharu terakhir, penyelesaian dalam penerbangan, dan penamatan paksa.

Susulan 5: Patutkah rantau lain menerima pendaftaran apabila satu rantau kehilangan kuorum?

Ia tidak seharusnya secara automatik mengambil pemilikan kebenaran tika rantau tersebut. Pandangan merentas rantau boleh tersilap menganggap pemetakan sebagai kegagalan tika sepenuhnya, dan dua satah kawalan mungkin menerima keadaan yang bercanggah. Rantau tanpa kuorum menghentikan penulisan katalog sementara proksi membaca cache. Lapisan global menghala panggilan baharu hanya mengikut dasar failover perkhidmatan yang diisytiharkan. Semasa pemulihan, semakan dan penjanaan permulaan mendamaikan keadaan supaya pajakan yang telah tamat tempoh tidak boleh menulis ganti tika yang lebih baharu.

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