Ruch przychodzący i wychodzący jako odrębne zbiory
Grafy dwudzielne w architekturze sieci
Graf dwudzielny dzieli wierzchołki na dwa zbiory, przy czym krawędzie są dozwolone wyłącznie między zbiorami (nigdy wewnątrz zbioru).
Granice sieci mają naturalną strukturę dwudzielną:
- Strona przychodząca (Ingress): klienci zewnętrzni po jednej stronie, usługi wewnętrzne po drugiej. Krawędzie: zewnętrzne żądania wchodzące, wewnętrzne odpowiedzi wychodzące.
- Strona egress: wewnętrzne usługi po jednej stronie, zewnętrzne destynacje po drugiej. Krawędzie: wewnętrzne usługi inicjujące połączenia wychodzące, zewnętrzne odpowiedzi wracające.
Asymetria:
- Ingress: zbiór źródeł jest nieograniczony (każdy w internecie). Zbiór destynacji jest mały (kilka usług). Wolumen skaluje się z liczbą użytkowników.
- Egress: zbiór źródeł jest mały (kilka wewnętrznych usług). Zbiór destynacji jest ograniczony (kilka znanych partnerów). Wolumen skaluje się z aktywnością wewnętrzną.
Projekt z jednym węzłem (single-box) sprowadza obie połówki grafu dwudzielnego do jednego węzła. Ten węzeł ma wejścia z zewnątrz (ingress) ORAZ wejścia z wewnątrz (odwrotny kierunek egress). Obciążenie węzła = suma obciążenia obu stron.
Projekt rozłączony (split design) zachowuje obie połówki grafu dwudzielnego na osobnych węzłach. Każdy węzeł obsługuje jedną rolę z odpowiednią osią skalowania.
Przed rozdzieleniem: Węzeł rozcinający wszędzie
Jedno pudełko: Jeden węzeł trzyma wszystko
Przed podziałem pojedyncze pudełko proxy znajduje się między każdą parą zewnętrzną/wewnętrzną. W terminologii grafowej jest to wierzchołek cięcia wysokiej rzędu: jego usunięcie rozłącza wszystkich klientów od wszystkich backendów ORAZ wszystkie usługi wewnętrzne od wszystkich partnerów zewnętrznych.
Łączność na tym węźle wynosi 1. Cokolwiek, co zakłóci działanie tego węzła (zawieszenie procesu, błąd sieci, zabójstwo przez OOM), rozłączy każdą zależną ścieżkę.
Po podziale: Wierzchołek cięcia zastąpiony przez dwa lżejsze węzły
Podział na ingress + egress tworzy dwa węzły grafu tam, gdzie wcześniej był jeden. Każdy węzeł znajduje się teraz tylko na jednej połówce dwudzielnej:
- Węzeł ingress: wierzchołek cięcia dla połówki dwudzielnej „klienci zewnętrzni – usługi wewnętrzne”
- Węzeł egress: wierzchołek cięcia dla połówki dwudzielnej „usługi wewnętrzne – partnerzy”
Pętla hairpin znika geometrycznie: w grafie z pojedynczym pudełkiem usługa wewnętrzna próbująca dotrzeć do usługi skierowanej na zewnątrz za pomocą adresu publicznego musiała przechodzić przez ten sam wierzchołek dwukrotnie (na zewnątrz w roli egress, a następnie do wewnątrz w roli ingress). W grafie po podziale przejście trafia na dwa różne wierzchołki.
Łączność po każdej stronie pozostaje na poziomie 1, ale dwa wierzchołki cięcia mogą być zastępowane niezależnie. Dodanie drugiego proxy ingress podnosi łączność po stronie ingress do 2, bez zmiany po stronie egress.
Replikacja po każdej stronie
Floty produkcyjne często uruchamiają 2 lub więcej proxy wejściowych (HA) ORAZ 2 lub więcej proxy wyjściowych (HA). Każda strona osiąga niezależnie łączność 2. Pojemność skaluje się poziomo na każdej stronie w miarę potrzeby.
Odporność na partycjonowanie sieci
Synteza
Teraz możesz czytać architektury sieci jako grafy dwudzielne, identyfikować wierzchołki rozcinające oraz śledzić łączność w obrębie każdej z części.
Zastosuj to do partycjonowania sieci.
Partycjonowanie sieci to rozcięcie grafu: krawędzie przecinające partycję ulegają awarii; obie strony nadal działają, ale nie mogą się ze sobą komunikować.
Geograficznie rozproszony system ma dwa centra danych połączone pojedynczym łączem międzycentrowym (inter-DC). Ruch przychodzący (ingress) wchodzi przez DC1; ruch wychodzący (egress) przechodzi przez DC1 do zewnętrznych partnerów; niektóre usługi wewnętrzne znajdują się w DC2 i wywołują operacje stanowe (stateful) w DC1.
Notatki towarzyszące
Notatki towarzyszące
Ta lekcja z zakresu geometrii reinterpretuje główną lekcję Separacji Ingress i Egress jako analizę grafu dwudzielnego.
Następna notatka towarzysząca, geometry_of_failure_modes_and_blast_radius, wyprowadza centralność międzywęzłową (identyfikuje węzły wąskiego gardła) oraz minimalne cięcie (ogranicza promień rażenia).
Bardzo dobrze.