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

un

gość
1 / ?
powrót do lekcji

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.

Współczynnik międzyści: wyróżniony węzeł leży na większości najkrótszych ścieżek

System ma: 100 zewnętrznych klientów -> 1 DNS -> 1 dostawca CDN -> 3 proxy odwrócone -> 12 replik backendu -> {1 główny węzeł bazy danych, 2 węzły cache, 5 zewnętrzne punkty końcowe API}. Ułóż te klasy węzłów według współczynnika międzyści (od najwyższego do najniższego) i wyjaśnij, dlaczego dwa najwyższe miejsca zasługują na szczególną uwagę.

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.

Min-cut as bound on blast radius; diameter as propagation distance

Obliczenie min-cut dla rzeczywistej architektury

Architektura: 1 DNS, 1 CDN, 3 proxy odwrócone, 12 replik backendu, 1 primary DB.

Oblicz (lub oszacuj) min-cut na trzech granicach: (1) między klientami zewnętrznymi a warstwą proxy odwróconych; (2) między warstwą proxy odwróconych a warstwą backendu; (3) między warstwą backendu a primary DB. Dla każdej z nich wskaż, co ulega awarii, gdy ten min-cut zostanie przekroczony.

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 }.

Przeprowadź audyt systemu: (1) podaj nazwę węzła o najwyższym współczynniku międzyściśliwości, (2) oblicz minimalne cięcie (min-cut) na najbardziej problematycznej granicy oraz (3) zaproponuj dwie konkretne zmiany architektoniczne (każda podnosząca wartość min-cut, każda nazwana z podaniem wzmocnionej granicy).

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.