Eingehend und Ausgehend als getrennte Mengen
Bipartite Graphs in Netzwerkarbeit
Ein bipartite Graph teilt Knoten in zwei Mengen, mit Kanten, die nur zwischen Mengen erlaubt sind (nie innerhalb einer Menge).
Netzwerkgrenzen haben eine natürliche bipartite Struktur:
- Ingress-Seite: Außenkunden 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 Zielpunkte auf der anderen. Kanten: interne Dienste initiieren auswärtige Anrufe, externe Antworten kommen zurück.
Die Asymmetrie:
- Ingress: Quellmenge ist unbegrenzt (jeder auf dem Internet). Zielmenge ist klein (ein paar Dienste). Volumen skaliert mit Benutzern.
- Egress: Quellmenge ist klein (ein paar interne Dienste). Zielmenge ist begrenzt (ein paar bekannte Partner). Volumen skaliert mit interner Aktivität.
Ein-Boxen-Design vereint beide bipartiten Hälften über einen Knoten. Dieser Knoten hat Fan-in von außen (Ingress) UND Fan-in von innen (Egress in entgegengesetzter Richtung). Der Knotenlast = Summe beider Seiten.
Geteilter Design bewahrt beide bipartiten Hälften bei getrennten Knoten. Jeder Knoten handhabt eine Rolle mit dem entsprechenden Skalierungsachse.
Bevor der Split: Ein Schnittknoten überall
Ein-Box: Alles in einer Halbkugel
Bevor der Split, sitzt eine einzelne Proxy-Box zwischen jedem externen/internen Paar. In Graphenbegriff ist es eine hochgradige Schnittverzweigung: Ihre Entfernung trennt alle Kunden von allen Backends ABER auch alle internen Dienste von allen externen Partnern.
Verbindbarkeit an diesem Knoten = 1. Alles, was diese Knoten (Prozesscrash, Netzwerkstörung, OOM-Töten) beeinträchtigt, trennt jede abhängige Strecke.
Nach dem Split: Schnittverzweigung ersetzt durch zwei leichtere Knoten
Teilen Sie in Ein- und Ausgabegruppe auf, erstellt zwei Graphenknoten, anstatt eines. Jeder Knoten sitzt jetzt nur auf einer bipartiten Hälfte:
- Ein-Knoten: Schnittverzweigung für die extern-klienten-internen-dienste bipartite Halbseite
- Aus-Knoten: Schnittverzweigung für die intern-dienste-partner bipartite Halbseite
Die Hairpin-Schleife verschwindet geometrisch: Im Graphen der einzelnen Box benötigte ein interner Service, um ein extern geconfrontetes Service über die öffentliche Adresse zu erreichen, die gleiche Verzweigung zweimal zu durchqueren (aus über die Ausgangsrolle, dann über die Ein-rolle). Im getrennten Graphen trifft die Durchquerung auf zwei verschiedene Knoten.
Verbindbarkeit pro Seite bleibt bei 1, aber die beiden Schnittverzweigungsknoten können unabhängig voneinander ersetzt werden. Hinzufügen einer zweiten Ein-Proxy erhöht die Ein-Seite-Verbindbarkeit auf 2, ohne die Aus-Seite zu ändern.
Kopierung pro Seite
Produktionsflotten führen oft 2+ Ein-Proxy (HA) UND 2+ Aus-Proxy (HA) aus. Jede Seite erreicht unabhängig die Verbindbarkeit 2. Kapazität skaliert horizontal auf jeder Seite, wie benötigt.
Netzwerkteilungsverträglichkeit
Synthese
Sie können jetzt Netzarchitekturen als bipartite Graphen lesen, identifizieren Sie Schnittknoten und verfolgen Sie die Verbindungsweise pro Teil.
Anwenden Sie dies auf Netzwerkpartitionen.
Eine Netzwerkpartition ist ein Graphen-Schnitt: Kanten über der Partition schlagen fehl; beide Seiten funktionieren weiter, können sich jedoch nicht erreichen.
Ein geografisch verteiltes System hat zwei Rechenzentren, die über eine einzelne inter-DC-Verbindung verbunden sind. Eingehende Verkehr tritt über DC1 ein; ausgehender Verkehr geht über DC1 zu externen Partnern; einige interne Dienste befinden sich in DC2 und rufen für stateful Betriebe in DC1 zurück.
Kommilitonennotizen
Kommilitonennotizen
Diese Geometrie-der-Lektion stellt die Trennung von Ingress und Egress-Hauptlektion als bipartite-Graphen-Analyse dar.
Der nächste Begleiter, geometry_of_failure_modes_and_blast_radius, ableitet zwischenwertszentralität (identifiziert Engpassknoten) und Min-Schnitt (begrenzt Sprengkraftradius).
Gut gemacht.