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, Sisi, Arah

Permintaan sebagai Langkah pada Graf

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

Setiap koneksi antara dua node adalah sisi berarah: permintaan mengalir maju, respons mengalir mundur. Sisi maju mewakili koneksi TCP yang terbuka plus protokol di atasnya.

Satu permintaan adalah jalur melalui graf ini. Total kerja yang dilakukan sistem untuk menjawab permintaan sama dengan jumlah kerja di setiap node, ditambah latensi dari setiap sisi.

Mengapa peduli? Begitu Anda menggambar grafnya, properti-properti yang tidak terlihat dalam kode akan langsung terlihat:

- Jumlah hop: jumlah sisi dalam jalur. Setiap hop menambah latensi (round trip jaringan + pemrosesan node). Semakin sedikit hop = semakin rendah batas bawah latensi.

- In-degree: berapa banyak sisi yang menunjuk KE DALAM sebuah node. In-degree tinggi berarti node tersebut menerima permintaan dari banyak sumber & harus melakukan scaling atau melindungi dirinya sendiri.

- Out-degree: berapa banyak sisi yang menunjuk KELUAR dari sebuah node. Out-degree tinggi berarti node tersebut bergantung pada banyak downstream & memiliki banyak cara untuk gagal.

- Cut vertex: satu node tunggal yang jika dihapus akan memutus koneksi graf. Reverse proxy tanpa peer adalah cut vertex; menghapusnya akan menghilangkan semua akses ke origin-nya.

Request as path through directed graph: client, proxy, backend, database

Gambar (atau jelaskan dalam teks) graf permintaan untuk: browser klien -> edge CDN -> reverse proxy -> replika backend -> database. Hitung jumlah hop. Identifikasi cut vertex-nya. Prediksi satu konsekuensi operasional dari memiliki begitu banyak cut vertex berurutan.

Di Mana Lalu Lintas Terkonsentrasi

Fan-In = Konsentrasi

Derajat masuk (in-degree) dari sebuah simpul = jumlah sisi yang mengarah ke dalamnya. Dalam graf permintaan, derajat masuk = jumlah sumber hulu yang mengirim permintaan.

Pola fan-in: banyak klien -> satu CDN; banyak tepi CDN -> beberapa proxy origin; banyak proxy -> beberapa replika backend; banyak backend -> satu database.

Konsentrasi penting karena node dengan in-degree tertinggi melihat beban agregat terbesar. DB di ujung rantai mungkin melihat kueri dari setiap permintaan aktif di seluruh sistem, meskipun tidak ada satu pun pengguna yang menghasilkan beban besar.

Fan-Out = Dependensi

Out-degree dari sebuah node = jumlah edge yang menunjuk keluar darinya. Out-degree tinggi berarti banyak dependensi downstream.

Backend yang memanggil database, dua cache, tiga API eksternal, & sebuah queue memiliki out-degree 7. Probabilitas keberhasilannya kira-kira adalah hasil kali dari probabilitas keberhasilan masing-masing downstream (jika semuanya diperlukan untuk respons yang sukses).

0,999 ^ 7 ≈ 0,993: backend dengan 7 downstream yang masing-masing memiliki keandalan 99,9% hanya dapat mencapai keandalan ~99,3% itu sendiri, bahkan tanpa bug apa pun.

Kurangi out-degree dengan: meng-cache hasil downstream, membuat downstream yang tidak kritis menjadi opsional (degradasi anggun), dan memparalelkan apa yang bisa diparalelkan.

Asimetri

Fan-in memusatkan beban; fan-out melipatgandakan risiko. Grafik yang dibentuk dengan baik meminimalkan keduanya pada node dengan dampak tertinggi.

Database (fan-in tertinggi): gunakan cache secara agresif untuk mengurangi beban. Gunakan read replicas untuk menyebarkan fan-in ke beberapa node.

Layanan orkestrator (fan-out tertinggi): circuit breaker per dependensi, degradasi yang halus (graceful degradation), dan bulkheads.

Sebuah replika backend memanggil 4 layanan downstream, masing-masing secara independen memiliki ketersediaan 99,95%. (1) Berapa batas atas ketersediaan backend jika semua 4 panggilan tersebut diperlukan untuk respons yang berhasil? (2) Jika 2 dari 4 downstream tersebut dibuat opsional melalui degradasi yang halus (diganti dengan fallback yang di-cache saat tidak tersedia), bagaimana batasnya menjadi?

Simpul yang Disisipkan Membeli Fleksibilitas

Indireksi = Menambahkan Simpul Perantara

Tanpa proxy, grafnya adalah: client -> backend. Klien harus mengetahui alamat backend. Memindahkan backend memerlukan pembaruan pada klien (melalui DNS atau konfigurasi). Ini adalah ikatan yang ketat.

Dengan proxy, graf menjadi: client -> proxy -> backend. Klien hanya mengetahui tentang proxy. Memindahkan backend memerlukan pembaruan pada konfigurasi upstream proxy, bukan pada klien.

Operasi graf: menyisipkan simpul di sepanjang tepi yang sudah ada. Tepi baru client -> proxy stabil; tepi baru proxy -> backend kini menjadi tanggung jawab tim untuk dikelola.

Pembacaan geometris: indireksi menambahkan lapisan yang memisahkan perubahan upstream dari perubahan downstream. Tepi pada setiap lapisan dapat di-rewire secara independen.

Biaya Indireksi

Setiap lapisan menambah:

- Satu lompatan latensi (sisi dari klien ke proxy)

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

- Satu tempat lagi di mana salah konfigurasi dapat terjadi

Manfaatnya (mengatur ulang kabel, skala, melindungi, mengakhiri TLS, mendistribusikan beban) biasanya melebihi biayanya untuk sistem yang tidak trivial. Namun ada batasnya: setiap lapisan indireksi menambah satu lompatan lagi & satu kandidat SPOF lagi.

Aturan folklor: setiap masalah dapat diselesaikan dengan menambahkan lapisan indireksi (kecuali masalah terlalu banyak lapisan indireksi).

Sebuah tim menambahkan CDN di depan reverse proxy yang sudah ada. Jalurnya berubah dari `client -> proxy -> backend` (2 lompatan) menjadi `client -> CDN -> proxy -> backend` (3 lompatan). Sebutkan dua manfaat dari indireksi (istilah teori graf dipersilakan) & dua biayanya.

Membaca Arsitektur sebagai Graf

Sintesis

Kamu sekarang dapat membaca arsitektur sistem sebagai graf: menghitung lompatan (hops), mengidentifikasi simpang pemotong (cut vertices), mengukur konsentrasi fan-in, menghitung batas atas ketersediaan (availability ceiling) dari fan-out, & mengevaluasi trade-off indirection.

Terapkan keempatnya.

Sebuah layanan baru memiliki arsitektur ini: clients -> CDN -> reverse proxy (2 replika) -> backend tier (8 replika) -> { DB primary, cache cluster (3 node), external API }.

Analisis: (1) berapa jumlah lompatan (hop) maksimum pada satu jalur permintaan, (2) tier mana yang memiliki fan-in tertinggi (& apa implikasinya untuk scaling), (3) berapa batas atas ketersediaan (availability ceiling) backend jika DB 99,95%, cache 99,95%, & external API 99,9%, semuanya wajib, & (4) simpang tunggal mana, jika dihapus, akan memutus koneksi pengguna paling banyak?

Catatan Pendamping

Catatan Pendamping

Pelajaran geometri ini membingkai ulang pelajaran utama Proksi & Asal sebagai analisis graf berarah.

Pendamping berikutnya dalam kursus ini, geometry_of_stateless_horizontal_scaling, mengambil perhitungan replika dari pelajaran penskalaan utama & menurunkan kurva antrean, Hukum Little, & titik lutut utilisasi 80% secara geometris.

Tugas selesai.