Gesaan dan kes penggunaan
Ini ialah masalah reka bentuk ketersediaan berbilang wilayah. Jawapan yang berguna menerangkan keputusan trafik, penyebaran isyarat kesihatan, sempadan kapasiti dan data semasa kegagalan, serta cara failover dan failback dilatih.
Perkara yang dinilai oleh penemu duga
- Sama ada DNS, proksi pinggir (edge proxy), dan penghalaan aplikasi mempunyai tanggungjawab dan skala masa yang berbeza.
- Sama ada kesihatan menggunakan isyarat berlapis daripada pelbagai pemerhati dan bukannya satu titik akhir (endpoint).
- Sama ada kapasiti failover, sambungan, dan had kadar (rate limits) dikira.
- Sama ada data berkeadaan (stateful) mempunyai pemilikan penulisan yang jelas, kelengahan replikasi, dan kekangan serantau.
- Sama ada split brain, penyesaran (flapping), dan lata failback dikawal.
- Sama ada RTO, RPO, SLO, dan bukti latihan ditakrifkan.
Penjelasan sebelum menjawab
- Wilayah, trafik puncak, dan model kegagalan wilayah tunggal yang manakah terpakai?
- Apakah kekangan RTO, RPO, pemastautinan data (residency), dan pematuhan?
- Adakah permintaan kebanyakannya bacaan tanpa keadaan (stateless), atau adakah ia termasuk penulisan dan sambungan jangka panjang?
- Adakah pengemudian dilakukan oleh DNS, Anycast, proksi pinggir, atau service mesh?
- Perjalanan pengguna dan kebergantungan manakah yang mesti diliputi oleh pemeriksaan kesihatan?
- Apakah yang diperlukan oleh TTL DNS klien, penghijrahan sambungan, dan tetingkap failback?
Kerangka jawapan 30 saat
"Saya akan mentakrifkan kegagalan serantau, beban puncak, dan RTO/RPO terlebih dahulu. DNS atau titik masuk pinggir boleh memilih calon berasaskan kependaman, tetapi hanya wilayah yang lulus pemeriksaan kesihatan berlapis dengan kapasiti lapang akan menerima trafik. Semasa lebihan beban, kami mengehadkan kadar dan menurunkan kualiti perkhidmatan mengikut keutamaan supaya wilayah sandaran dapat bertahan. Operasi tulis mengikut sempadan pemilikan data dengan kelengahan replikasi dan semantik percubaan semula yang jelas. Pengawal yang diredam mengalihkan pemberat secara beransur-ansur, dan kami melatih, memanaskan (warm-up), serta mengesahkan metrik sebelum failback."
Perbincangan mendalam langkah demi langkah
Langkah 1: Tentukan kegagalan dan objektif. Nyatakan skop kegagalan wilayah, kebergantungan, rangkaian, dan satah kawalan (control plane), kemudian kuantifikasikan RTO, RPO, puncak, dan tahap penurunan perkhidmatan.
Langkah 2: Asingkan lapisan keputusan. DNS atau titik masuk global mengendalikan pilihan wilayah secara kasar; lapisan pinggir atau perkhidmatan mengendalikan pemberat langsung, sambungan, dan had setempat. Jangan jadikan satu satah kawalan menampung setiap tindakan kegagalan.
Langkah 3: Bina isyarat kesihatan. Gabungkan prob dari pelbagai lokasi, perjalanan pengguna yang kritikal, status kebergantungan, kadar ralat, dan kapasiti. Tetingkap berturutan, tetingkap pemulihan, dan keputusan seperti kuorum mengurangkan masalah penyesaran (flapping).
Langkah 4: Lindungi kapasiti. Rizabkan ruang penampan (headroom) failover dan tetapkan had keserentakan, giliran, dan had kadar bagi setiap wilayah. Semasa kegagalan, singkirkan kerja berkeutamaan rendah sebelum trafik kritikal menyebabkan kegagalan berlata.
Langkah 5: Tentukan sempadan data. Terangkan kelengahan replika, pemilikan penulisan, pengendalian konflik, kunci keidempotennan (idempotency keys), dan percubaan semula rentas wilayah. Penghalaan tidak boleh menjadikan penulisan yang tidak tersedia konsisten.
Langkah 6: Laksanakan failover. Pengawal merekodkan sebab, versi, dan kelulusan, menurunkan pemberat wilayah yang gagal, dan mengalihkan kohort kecil sebelum mengembangkannya. Sambungan jangka panjang memerlukan backoff dan pemulihan sesi.
Langkah 7: Latih failback. Panaskan wilayah yang pulih, sahkan metrik yang stabil dan semakan data, kemudian lakukan failback. Suntik kegagalan wilayah, kebergantungan, dan satah kawalan secara kerap serta kekalkan bukti RTO/RPO yang diukur.
Contoh jawapan berkualiti tinggi
"Saya akan membahagikan setiap wilayah kepada lapisan masuk, perkhidmatan tanpa keadaan, dan unit data. Titik masuk global memilih calon kependaman, tetapi sesuatu wilayah menerima trafik hanya apabila semakan perjalanan pelbagai lokasi, ambang ralat, dan ruang kapasiti mencukupi. Pengawal menggunakan masa henti minimum dan bertenang (cooldown), terlebih dahulu menghantar 5% ke sandaran. Jika keserentakan sandaran mencapai hadnya, ia melindungi log masuk dan penulisan sambil menjeda laporan berkeutamaan rendah. Pemilikan penyewa menentukan lokasi penulisan; percubaan semula rentas wilayah membawa kunci keidempotennan dan mendedahkan kelengahan replikasi. Latihan mengesahkan RTO, RPO, kejayaan sambungan semula, dan semakan data untuk kedua-dua failover dan failback."
Kesilapan lazim
- Hanya melukis DNS dan dua wilayah → kapasiti dan data tertinggal → tambah sekatan keselamatan pengawal dan pemilikan penulisan.
- Mengeluarkan wilayah selepas satu prob gagal → trafik mengalami flapping → gunakan tetingkap, tempoh bertenang, dan pelbagai isyarat.
- Menganggap sandaran menerima semua trafik → failover membebankannya secara berlebihan → kira ruang penampan dan penurunan berperingkat.
- Menganggap TTL sebagai masa penyelesaian → klien masih menyimpan jawapan lama dalam cache → sertakan kelewatan penyelesai (resolver), sambungan, dan pinggir.
- Menyebut aktif-aktif tanpa peraturan konflik → penulisan tidak ditakrifkan → nyatakan pemilikan, replikasi, dan keidempotennan.
Soalan susulan dan jawapan
Soalan susulan 1: Bagaimana jika TTL DNS adalah panjang?
Gunakan bahagian pinggir untuk perubahan pemberat yang lebih pantas dan sertakan TTL, cache rekursif, dan jangka hayat sambungan dalam belanjawan RTO; jangan menjanjikan peralihan serta-merta.
Soalan susulan 2: Bagaimana jika pemeriksaan kesihatan gagal?
Gunakan laluan kawalan bebas dan prob dari pelbagai lokasi, jejaki kesegaran data, dan kekalkan keadaan selamat terakhir atau masuki mod manual yang dilindungi apabila pemeriksaan tamat tempoh.
Soalan susulan 3: Bagaimana jika kapasiti sandaran tidak mencukupi?
Rizabkan dan panaskan kapasiti, kemudian hadkan kadar, turunkan taraf, atau susun mengikut keutamaan. Buktikan had siling wilayah tunggal dengan ujian beban.
Soalan susulan 4: Bagaimanakah anda menghalang flapping?
Gunakan ambang kegagalan dan pemulihan yang berbeza, masa henti minimum, tempoh bertenang, dan kelulusan, dengan sebab direkodkan untuk setiap perubahan pemberat.
Soalan susulan 5: Bagaimanakah anda mengendalikan konflik penulisan rentas wilayah?
Tetapkan pemilikan mengikut penyewa atau kunci dan gunakan syarat versi atau keidempotennan. Jika multi-writer diperlukan, tentukan peraturan konflik dan data yang tidak boleh digabungkan.
Soalan susulan 6: Bagaimanakah anda membuktikan ia berfungsi?
Latih kegagalan wilayah, kebergantungan, rangkaian, dan satah kawalan serta ukur RTO, RPO, ralat, kapasiti yang dipulihkan, sambungan semula, dan semakan data.
Soalan susulan 7: Bilakah anda patut mengelakkan berbilang wilayah?
Jika pemastautinan data, semantik replikasi, keupayaan operasi, atau kos tidak dapat memenuhi sasaran, gunakan reka bentuk wilayah tunggal yang teruji dengan pemulihan bencana terlebih dahulu. Berbilang wilayah bukanlah satu pilihan automatik.