Inkommande och utgående som distinkta mängder
Bipartita grafer i nätverksarkitektur
En bipartit graf delar noder i två mängder, där kanter endast tillåts mellan mängderna (aldrig inom en mängd).
Nätverksgränser har en naturlig bipartit struktur:
- Inkommande sida: externa klienter på ena sidan, interna tjänster på den andra. Kanter: externa förfrågningar som kommer in, interna svar som går ut.
- Egress-sidan: Interna tjänster på ena sidan, externa destinationer på den andra. Kanter: Interna tjänster som initierar utgående anrop, externa svar som kommer tillbaka.
Asymmetrin:
- Ingress: Källmängden är obegränsad (någon som helst på internet). Målmängden är liten (några få tjänster). Volymen skalar med användare.
- Egress: Källmängden är liten (några få interna tjänster). Målmängden är begränsad (några kända partners). Volymen skalar med intern aktivitet.
Enkellådsdesign (single-box design) samlar båda bipartita halvor genom en enda nod. Den noden har fan-in från utsidan (ingress) OCH fan-in från insidan (egress motsatta riktning). Nodens last = summan av båda sidor.
Uppdelad design (split design) bevarar båda bipartita halvor på separata noder. Varje nod hanterar en roll med dess lämpliga skalningsaxel.
Innan uppdelningen: En skärknutpunkt överallt
Enkellåda: En knutpunkt håller allt
Före uppdelningen ligger en enda proxybox mellan varje externt/internt par. I graftermer är det en skärningsnod med hög ordning: dess borttagning kopplar bort alla klienter från alla bakändar OCH alla interna tjänster från alla externa partners.
Kopplbarheten vid denna nod = 1. Allt som stör denna nod (processkrasch, nätverksfel, OOM-kill) kopplar bort varje beroende sökväg.
Efter uppdelningen: Skärningsnoden ersatt av två lättare noder
Att dela upp i ingress + egress skapar två grafnoder där det tidigare fanns en. Varje nod ligger nu bara på en bipartit halva:
- Ingress-nod: skärningsnod för den bipartita halvan externt-klienter-till-interna-tjänster
- Egress-nod: skärningsnod för den bipartita halvan interna-tjänster-till-partners
Hårnålsloupen försvinner geometriskt: i den enskilda boxens graf krävde det att en intern tjänst försökte nå en externt riktad tjänst via den publika adressen att samma nod korsades två gånger (ut via egress-rollen, sedan in via ingress-rollen). I den uppdelade grafen träffar traversalen två olika noder.
Kopplbarheten per sida förblir 1, men de två skärningsnoderna kan ersättas oberoende av varandra. Att lägga till en andra ingress-proxy höjer ingress-sidans kopplbarhet till 2 utan att ändra egress-sidan.
Replication per sida
Produktionsflottar kör ofta 2+ ingress-proxyer (HA) OCH 2+ egress-proxyer (HA). Varje sida uppnår koppling 2 oberoende. Kapaciteten skalar horisontellt på varje sida efter behov.
Tolerans för nätverkspartitioner
Syntes
Du kan nu läsa nätverksarkitekturer som bipartita grafer, identifiera skiljande noder och spåra anslutningen per del.
Tillämpa detta på nätverkspartitioner.
En nätverkspartition är ett grafsnitt: kanaler över partitionen faller bort; båda sidorna fortsätter att fungera men kan inte nå varandra.
Ett geografiskt distribuerat system har två datacenter som är anslutna via en enda inter-DC-länk. Inkommande trafik kommer in via DC1; utgående trafik går via DC1 till externa partners; vissa interna tjänster ligger i DC2 och ringer tillbaka till DC1 för tillståndsberoende operationer.
Kompanionsanteckningar
Kompanionsanteckningar
Denna geometri-lektion omformulerar huvudlektionen Ingress & Egress Separation som en analys av bipartita grafer.
Nästa kompanion, geometry_of_failure_modes_and_blast_radius, härleder mellanhetssentralitet (identifierar flaskhalsnoder) & min-cut (begränsar spridningsradie).
Bra jobbat.