Węzeł wąskiego gardła zidentyfikowany przed przybyciem ruchu
Centralność międzywęzłowa
Dla każdej pary węzłów w grafie istnieje najkrótsza ścieżka między nimi. Centralność międzywęzłowa węzła N = ułamek wszystkich najkrótszych ścieżek, które przechodzą przez N.
Węzeł o wysokiej centralności międzywęzłowej znajduje się na ścieżce między wieloma innymi parami. Jeśli zwolni, wiele przepływów zwolni. Jeśli ulegnie awarii, wiele przepływów zostanie przerwanych.
Interpretacja architektoniczna: węzły o wysokiej centralności międzywęzłowej to te, na które każdy przegląd architektury powinien zwrócić szczególną uwagę. Są jednocześnie wąskimi gardłami, pojedynczymi punktami awarii (SPOF) oraz komponentami krytycznymi pod względem wydajności. Zazwyczaj są to:
- Dostawca DNS (pomiędzy każdym klientem a każdą usługą)
- Proxy wejściowy (pomiędzy każdym klientem a każdym backendem)
- Główny węzeł bazy danych (pomiędzy każdym backendem a każdym odczytem)
- Usługa uwierzytelniania (pomiędzy każdym użytkownikiem a każdą autoryzowaną akcją)
Wykrywanie bez pomiarów: sama topologia grafu identyfikuje węzły o wysokim współczynniku międzyści. Nie potrzebujesz danych o ruchu; potrzebujesz diagramu architektury. Węzeł, który znajduje się między wieloma parami innych węzłów, jest strukturalnie krytyczny.
Konsekwencja operacyjna: węzły o wysokim współczynniku międzyści zasługują na nieproporcjonalnie duże inwestycje w (1) zapas mocy obliczeniowej, (2) redundancję, (3) obserwowalność oraz (4) procedury reagowania na incydenty.
Najmniejsze cięcie odłącza najmniejszy fragment
Twierdzenie o minimalnym cięciu w prostych słowach
Minimalne cięcie (min-cut) między dwoma węzłami w grafie = najmniejsza liczba krawędzi (lub węzłów), które należy usunąć, aby rozłączyć je ze sobą.
Interpretacja operacyjna: min-cut ogranicza najgorszy możliwy zasięg awarii (blast radius). Jeśli min-cut między „klientami” a „bazą danych” wynosi 1 krawędź (pojedynczy proxy), to utrata tej krawędzi odłącza wszystkich klientów od bazy danych. Jeśli min-cut wynosi 5, aby całkowicie rozłączyć te elementy, trzeba jednocześnie stracić 5 komponentów; to pech, ale ryzyko jest ograniczone.
Projektowanie z myślą o zasięgu awarii: zwiększaj min-cut na każdej istotnej granicy. Wiele proxy; wiele węzłów cache; wiele ścieżek sieciowych między centrami danych. Każda dodatkowa krawędź zwiększa min-cut o 1.
Wzór grodzicy (bulkhead) w terminologii grafów: podział zasobów na osobne podgrafy, które nie mają ze sobą wspólnego min-cutu. Awaria w jednym podgrafie nie może rozprzestrzenić się na inne, ponieważ łączące je krawędzie nie istnieją.
Średnica wyznacza dystans propagacji awarii
Średnica grafu = najdłuższa z najkrótszych ścieżek między dowolnymi dwoma węzłami.
Propagacja awarii: gdy węzeł ulega awarii, a ponowienia żądań (retries) wracają w górę, dotykają one węzłów górnych (upstream) do odległości równej średnicy. System o średnicy 3 (klient -> proxy -> backend -> Baza Danych) oznacza, że awaria bazy danych wpływa na 3 warstwy górne w burzy ponowień.
Implikacja: krótsza średnica = szybsze opanowanie awarii, ale też większe zagęstnienie węzłów. Każdy projekt ma swoje kompromisy.
Obliczenie min-cut dla rzeczywistej architektury
Architektura: 1 DNS, 1 CDN, 3 proxy odwrócone, 12 replik backendu, 1 primary DB.
Audyt trybów awarii za pomocą metryk grafowych
Synteza
Teraz możesz identyfikować węzły o wysokim współczynniku międzyściśliwości (betweenness), obliczać minimalny cięcie (min-cut) na każdej granicy oraz szacować odległość propagacji awarii za pomocą średnicy grafu.
Zastosuj wszystkie trzy.
System: 50 końcówek klientów -> 1 DNS -> 2 punkty obecności CDN (POPs) -> 4 proxy odwrócone -> 16 replik backendu -> { klaster BAZ (1 primary + 2 standbys), klaster Redis (5 węzłów), 3 zewnętrzne API }.
Notatki towarzyszące
Notatki towarzyszące
Ta lekcja z zakresu geometrii reinterpretuje główną lekcję Tryby awarii i promień rażenia za pomocą metryk grafowych (międzyść, minimalne cięcie, średnica).
Ostatnia notatka towarzysząca, geometry_of_observability_and_capacity, omawia komórki Voronokiego dla obszarów działania punktów obecności CDN, dolną granicę opóźnienia wynikającą z prędkości światła w trójkącie opóźnień oraz krzywą kolejkowania ponownie rozważaną na poziomie proxy.
Bardzo dobrze.