English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

tamu
1 / ?
kembali ke pelajaran

Node, Edges, Arahan

Permintaan Sebagai Langkah di Graf

Setiap komponen yang disentuh oleh permintaan adalah sebuah node: klien, resolver DNS, tepi CDN, reverse proxy, replika backend, database, cache.

Setiap koneksi antara dua node adalah sebuah edge yang diarahkan: permintaan mengalir ke depan, respons mengalir kembali. Edge maju mewakili koneksi TCP terbuka plus protokol di atasnya.

Permintaan tunggal adalah sebuah jalur melalui graf ini. Total pekerjaan sistem untuk menjawab permintaan sama dengan jumlah pekerjaan di setiap node, plus latensi setiap edge.

Mengapa peduli? Setelah Anda menggambar graf, properti yang tidak terlihat dalam kode akan muncul:

- Jarak lompatan: jumlah edge dalam jalur. Setiap lompatan menambahkan latensi (putaran jaringan + pengolahan node). Jarak lompatan lebih sedikit = lantai lebih rendah pada latensi.

- In-degree: jumlah edge yang mengarah ke dalam sebuah node. In-degree tinggi berarti node menerima permintaan dari banyak sumber & harus skala atau melindungi diri sendiri.

- Out-degree: jumlah edge yang mengarah keluar dari sebuah node. Out-degree tinggi berarti node tergantung pada banyak downstream & memiliki banyak cara untuk gagal.

- Vertex potong: sebuah node tunggal yang penghapusanannya menghubungkan graf. Sebuah reverse proxy tanpa rekan adalah vertex potong; menghapusnya menghapus akses ke semua asalnya.

Permintaan sebagai jalur melalui graf diarahkan: klien, proxy, backend, database

Gambar (atau deskripsikan dalam teks) graf permintaan untuk: browser klien -> tepi CDN -> reverse proxy -> replika backend -> database. Hitung jarak. Identifikasi vertex potong. Prediksi satu konsekuensi operasional dari memiliki begitu banyak vertex potong secara berurutan.

Di Mana Traffic Konsentrasi

Fan-In = Konsentrasi

Derajat masuk dari sebuah node = jumlah sisipan yang mengarah ke dalamnya. Di grafik permintaan, derajat masuk = jumlah sumber upstream yang mengirim permintaan.

Polanya fan-in: banyak klien -> satu CDN; banyak sisipan CDN -> beberapa proxy asal; banyak proxy -> lebih sedikit replika backend; banyak backend -> basis data tunggal.

Konsentrasi penting karena node dengan derajat masuk tertinggi melihat beban agregat terbanyak. Basis data di ujung rantai mungkin melihat query dari setiap permintaan aktif di sistem keseluruhan, meskipun tidak ada pengguna tunggal yang menghasilkannya.

Fan-Out = Ketergantungan

Derajat keluar dari sebuah node = jumlah sisipan yang mengarah keluar dari node tersebut. Derajat keluar tinggi berarti banyak ketergantungan turunan.

Sebuah backend yang memanggil basis data, dua cache, tiga API eksternal, dan antrian memiliki derajat keluar 7. Kemungkinan keberhasilannya sekitar produk dari kemungkinan keberhasilan setiap turunan (jika semua diperlukan untuk tanggapan sukses).

0,999 ^ 7 ≈ 0,993: sebuah backend dengan 7 turunan yang masing-masing memiliki keandalan 99,9% hanya bisa mencapai keandalan sekitar 99,3% sendiri, bahkan tanpa bug sendiri.

Turunkan derajat keluar dengan: caching hasil turunan, membuat turunan non-kritis opsional (degradasi halus), paralelisasi apa yang bisa paralel.

Asimetri

Fan-in mengkonsentrasikan beban; fan-out menggandakan risiko. Grafik yang baik mengurangi kedua di node yang paling berpengaruh.

Basis data (fan-in tertinggi): cache secara agresif untuk mengurangi beban. Replika baca untuk menyebar fan-in ke beberapa node.

Service orchestrator (fan-out tertinggi): breaker sirkuit per ketergantungan, degradasi halus, bulkheads.

Sebuah replika backend memanggil 4 layanan turunannya secara independen, masing-masing dengan 99,95% availability. (1) Apa batas atas availability backend jika semua 4 panggilan diperlukan untuk tanggapan sukses? (2) Jika 2 dari 4 turunan tersebut dibuat opsional melalui degradasi halus (digantikan dengan fallback cache saat tidak tersedia), apa batas yang menjadi?

Sebuah Node yang Ditetapkan Membeli Fleksibilitas

Indirect = Menambahkan Node Antara

Tanpa proxy, grafiknya adalah: client -> backend. Klien harus mengetahui alamat backend. Memindahkan backend memerlukan pengaturan kembali klien (via DNS atau konfigurasi). Ini adalah ikatan ketat.

Dengan proxy, grafik menjadi: client -> proxy -> backend. Klien hanya tahu tentang proxy. Memindahkan backend memerlukan pengaturan kembali konfigurasi upstream proxy, bukan klien.

Operasi grafik: tambahkan node di sepanjang tepi yang ada. Tepi baru client -> proxy stabil; tepi baru proxy -> backend sekarang menjadi tanggung jawab tim.

Bacaan geometris: indikasi menambahkan lapisan yang memisahkan perubahan upstream dari perubahan downstream. Setiap lapisan tepi dapat direnggangkan secara independen.

Biaya Indikasi

Setiap lapisan menambahkan:

- Satu hop latensi (menghubungkan edge dari klien ke proxy)

- Satu titik potong vertex lagi di jalur (proxy itu sendiri)

- Satu tempat lagi di mana kesalahan konfigurasi dapat terjadi

Manfaatnya (rewire, skala, pelindung, menghentikan TLS, mendistribusikan beban) biasanya lebih unggul dari biaya untuk sistem apa pun yang tidak trivial. Tapi ada batas: setiap lapisan indikasi menambahkan satu hop lagi & satu calon SPOF.

Folklore rule: masalah apa pun dapat diatasi dengan menambahkan lapisan indikasi (kecuali masalah terlalu banyak lapisan indikasi).

A team adds a CDN in front of an existing reverse proxy. The path goes from `client -> proxy -> backend` (2 hops) to `client -> CDN -> proxy -> backend` (3 hops). Name two benefits of the indirection (graph-theoretic terms welcome) & two costs.

Baca Arsitektur sebagai Grafik

Sinetis

Kamu sekarang bisa membaca arsitektur sistem sebagai grafik: hitung hop, identifikasi vertex potong, ukur konsentrasi fan-in, hitung langit ketersediaan dari fan-out, & evaluasi perdagangan indikasi.

Terapkan semua empat.

Jasa baru ini memiliki arsitektur ini: klien -> CDN -> reverse proxy (2 replika) -> lapisan backend (8 replika) -> { DB utama, cluster cache (3 node), API eksternal }.

Analisis: (1) berapa maksimum hop count pada jalur permintaan tunggal, (2) lapisan mana yang memiliki fan-in tertinggi (& apa artinya untuk skala), (3) atap ketersediaan backend jika DB adalah 99,95%, cache adalah 99,95%, & API eksternal adalah 99,9%, semuanya diperlukan, & (4) node tunggal mana, jika dihapus, akan memutuskan pengguna terbanyak?

Catatan Tambahan

Catatan Tambahan

Geometri pelajaran ini merangkum kembali pelajaran utama Proxies & Origins sebagai analisis graf berarah.

Catatan teman berikutnya dalam kursus ini, geometry_of_stateless_horizontal_scaling, mengambil matematika replika dari pelajaran skala utama dan menghasilkan kurva antrian, Hukum Little, dan lutut geometri penggunaan 80%.

Well done.