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

un

Gast
1 / ?

Eingehend & ausgehend als getrennte Mengen

Bipartite Graphen in der Netzwerkarchitektur

Ein bipartiter Graph teilt Knoten in zwei Mengen auf, wobei Kanten nur zwischen den Mengen erlaubt sind (nie innerhalb einer Menge).

Netzwerkgrenzen haben eine natürliche bipartite Struktur:

- Ingress-Seite: Externe Clients auf einer Seite, interne Dienste auf der anderen. Kanten: Externe Anfragen, die eintreten, interne Antworten, die ausgehen.

- Egress-Seite: interne Dienste auf einer Seite, externe Ziele auf der anderen. Kanten: interne Dienste, die ausgehende Aufrufe initiieren, und externe Antworten, die zurückkommen.

Die Asymmetrie:

- Ingress: Die Quellmenge ist unbeschränkt (jeder im Internet). Die Zielmenge ist klein (einige Dienste). Das Volumen skaliert mit den Nutzern.

- Egress: Die Quellmenge ist klein (einige interne Dienste). Die Zielmenge ist begrenzt (einige bekannte Partner). Das Volumen skaliert mit der internen Aktivität.

Einzelkasten-Design (Single-Box-Design) faltet beide bipartiten Hälften durch einen einzigen Knoten zusammen. Dieser Knoten hat einen Fan-in von außen (Ingress) UND einen Fan-in von innen (Richtung des Egress). Die Last des Knotens = Summe beider Seiten.

Getrenntes Design (Split-Design) erhält beide bipartiten Hälften an separaten Knoten. Jeder Knoten übernimmt eine Rolle mit seiner entsprechenden Skalierungsachse.

Bipartiter Ingress & Egress: separate Knotensets, separate Schnittknoten

Zeichnen Sie den bipartiten Graphen für ein kleines SaaS: 5 externe Kundendatenpunkte (die Anfragen senden), 3 interne Dienste (die Backends) & 4 externe Partner-APIs (die ausgehend aufgerufen werden). Identifizieren Sie, welche Kanten zur Ingress-bipartiten Hälfte und welche zur Egress-bipartiten Hälfte gehören. Prognostizieren Sie, was mit der Graphen-Konnektivität passiert, wenn einer der internen Dienste ausfällt.

Vor der Trennung: Ein Schnittknoten überall

Einzelnes Element: Ein Knoten hält alles zusammen

Vor der Aufteilung befindet sich ein einzelner Proxy-Container zwischen jedem externen/internen Paar. In grafentheoretischen Begriffen ist dies ein Schnittknoten hoher Ordnung: Seine Entfernung trennt alle Clients von allen Backends UND alle internen Dienste von allen externen Partnern.

Die Konnektivität an diesem Knoten = 1. Alles, was diesen Knoten stört (Prozessabsturz, Netzwerkstörung, OOM-Kill), trennt jeden abhängigen Pfad.

Nach der Aufteilung: Schnittknoten durch zwei leichtere Knoten ersetzt

Die Aufteilung in Ingress + Egress erzeugt zwei Graphenknoten, wo es zuvor nur einen gab. Jeder Knoten befindet sich nun nur auf einer bipartiten Hälfte:

- Ingress-Knoten: Schnittknoten für die bipartite Hälfte externe-Clients-zu-internen-Diensten

- Egress-Knoten: Schnittknoten für die bipartite Hälfte interne-Dienste-zu-Partnern

Die Haarnadelschleife verschwindet geometrisch: Im Ein-Box-Graph musste ein interner Dienst, der einen extern zugänglichen Dienst über die öffentliche Adresse erreichen wollte, denselben Knoten zweimal durchlaufen (ausgehend über die Egress-Rolle, dann eingehend über die Ingress-Rolle). Im aufgeteilten Graph trifft die Durchlaufung auf zwei verschiedene Knoten.

Die Konnektivität pro Seite bleibt bei 1, aber die beiden Schnittknoten können unabhängig voneinander ersetzt werden. Das Hinzufügen eines zweiten Ingress-Proxy erhöht die Konnektivität auf der Ingress-Seite auf 2, ohne die Egress-Seite zu verändern.

Replikation pro Seite

Produktionsflotten betreiben häufig 2+ Ingress-Proxy (HA) UND 2+ Egress-Proxy (HA). Jede Seite erreicht die Konnektivität 2 unabhängig voneinander. Die Kapazität skaliert auf jeder Seite horizontal nach Bedarf.

Ein Team betreibt derzeit einen Proxy-Server (ein einziger Cut Vertex für beide Richtungen). Sie teilen ihn in einen Ingress- und einen Egress-Proxy auf, fügen später einen zweiten Ingress-Proxy hinzu (HA-Paar), behalten aber einen einzelnen Egress-Proxy bei. Analysieren Sie, wie sich die Graphenkonnektivität in jedem Schritt ändert, und identifizieren Sie die bipartite Hälfte, die nach Schritt 3 noch 1-konnektiert ist (und daher weiterhin der am wenigsten tolerante Ausfallmodus ist).

Toleranz gegenüber Netzwerkpartitionen

Synthese

Sie können Netzwerkarchitekturen nun als bipartite Graphen lesen, Trennknoten identifizieren und die Konnektivität pro Hälfte verfolgen.

Wenden Sie dies auf Netzwerkpartitionen an.

Eine Netzwerkpartition ist ein Graphenschnitt: Kanten über die Partition hinweg fallen aus; beide Seiten fahren fort, können sich aber nicht mehr gegenseitig erreichen.

Ein geografisch verteiltes System verfügt über zwei Rechenzentren, die durch eine einzelne Inter-DC-Verbindung verbunden sind. Eingangsverkehr gelangt über DC1; Ausgangsverkehr verlässt das System über DC1 zu externen Partnern; einige interne Dienste befinden sich in DC2 und rufen für zustandsbehaftete Operationen in DC1 zurück.

Sagen Sie vorher, was passiert, wenn die Inter-DC-Verbindung ausfällt: (1) welche bipartiten Hälften bleiben innerhalb jedes DC verbunden, (2) welche Verkehrsflüsse setzen sich fort und welche stoppen, und (3) schlagen Sie eine architektonische Änderung vor, die es dem System ermöglicht, diese Partition mit begrenzter Degradation statt einem vollständigen Ausfall zu tolerieren.

Begleitnotizen

Begleitnotizen

Diese Lektion zur Geometrie formuliert die Hauptlektion Ingress & Egress Separation als Analyse eines bipartiten Graphen neu.

Die nächste Begleitnotiz, geometry_of_failure_modes_and_blast_radius, leitet die Betweenness-Zentralität (identifiziert Engpassknoten) und den minimalen Schnitt (begrenzt die Auswirkung) ab.

Gut gemacht.