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

un

gast
1 / ?
terug naar lessen

Inkomend & Uitgaand als afzonderlijke verzamelingen

Tweedelige grafen in netwerkarchitectuur

Een tweedelige graaf verdeelt knopen in twee verzamelingen, waarbij randen alleen tussen de verzamelingen zijn toegestaan (nooit binnen één verzameling).

Netwerkgrenzen hebben een natuurlijke tweedelige structuur:

- Ingress-kant: externe clients aan de ene kant, interne services aan de andere kant. Randen: externe aanvragen die binnenkomen, interne antwoorden die naar buiten gaan.

- Egress-zijde: interne services aan de ene kant, externe bestemmingen aan de andere kant. Randen: interne services die uitgaande oproepen initiëren, externe antwoorden die terugkomen.

De asymmetrie:

- Ingress: de bronverzameling is onbegrensd (iedereen op het internet). De bestemmingsverzameling is klein (een paar services). Het volume schaalt met het aantal gebruikers.

- Egress: de bronverzameling is klein (een paar interne services). De bestemmingsverzameling is begrensd (een paar bekende partners). Het volume schaalt met de interne activiteit.

Eenbakontwerp (single-box design) vouwt beide tweedelige (bipartite) helften samen via één node. Die node heeft fan-in van buitenaf (ingress) EN fan-in van binnenuit (de omgekeerde richting van egress). De belasting van de node = som van beide kanten.

Gesplitst ontwerp (split design) behoudt beide tweedelige (bipartite) helften op aparte nodes. Elke node verwerkt één rol met de bijbehorende schaalingsas.

Bipartite ingress & egress: separate node sets, separate cut vertices

Teken de tweedelige graaf (bipartite graph) voor een kleine SaaS: 5 externe klantendpoints (die aanvragen sturen), 3 interne services (de backends) & 4 externe partner-API's (die uitgaand worden aangeroepen). Identificeer welke randen tot de ingress-tweedelige helft behoren en welke tot de egress-tweedelige helft. Voorspel wat er gebeurt met de verbondenheid van de graaf als een van de interne services uitvalt.

Vóór de splitsing: Een knooppunt overal

Eén vakje: Eén knooppunt houdt alles vast

Vóór de splitsing zit er één proxy-doos tussen elk extern/intern paar. In grafische termen is dit een snijpunt van hoge graad: het verwijderen ervan verbreekt alle clients van alle backends EN alle interne services van alle externe partners.

Verbinding op deze knoop = 1. Wat dan ook deze knoop verstoort (procescrash, netwerkstoring, OOM-kill) verbreekt elk afhankelijk pad.

Na de Splitsing: Snijpunt Vervangen door Twee Lichtere Knopen

Het splitsen in ingress + egress creëert twee grafknopen waar er er één was. Elke knoop zit nu op slechts één tweedelige helft:

- Ingress-knoop: snijpunt voor de tweedelige helft van externe-clients-naar-interne-services

- Egress-knoop: snijpunt voor de tweedelige helft van interne-services-naar-partners

De haarspeldlus verdwijnt geometrisch: in de graf met één doos vereiste een interne service die via het openbare adres probeert te bereiken een externe-facing service, het doorlopen van dezelfde knoop twee keer (uit via de egressrol, dan in via de ingressrol). In de gesplitste graf raakt de doorloop twee verschillende knopen.

De verbinding per kant blijft op 1, maar de twee snijpunten kunnen onafhankelijk worden vervangen. Het toevoegen van een tweede ingress-proxy verhoogt de verbinding aan de ingress-kant naar 2 zonder de egress-kant te veranderen.

Replicatie per kant

Productievlootten draaien vaak 2+ ingress-proxies (HA) EN 2+ egress-proxies (HA). Elke kant bereikt connectiviteit 2 onafhankelijk. De capaciteit schaalt horizontaal per kant naar behoefte.

Een team draait momenteel één proxybox (enkel knipvertex voor beide richtingen). Ze splitsen deze in één ingress + één egress, en voegen later een tweede ingress toe (HA-paar), maar houden een enkele egress. Werk door hoe de grafconnectiviteit verandert in elke stap, & identificeer de bipartiete helft die na stap 3 nog steeds 1-verbonden is (en dus nog steeds de failuuremodus met de laagste tolerantie is).

Netwerkpartitietolerantie

Synthese

Je kunt nu netwerkaritecturen lezen als bipartiete grafen, knipknopen identificeren & verbinding per helft bijhouden.

Pas dit toe op netwerkpartities.

Een netwerkpartitie is een graafkniip: kanten over de partitie falen; beide zijden blijven werken, maar kunnen elkaar niet bereiken.

Een geografisch gedistribueerd systeem heeft twee datacenters die verbonden zijn via één inter-DC-koppeling. Inkomend verkeer komt binnen via DC1; uitgaand verkeer gaat via DC1 naar externe partners; sommige interne services bevinden zich in DC2 & roepen terug naar DC1 voor stateful operaties.

Voorspel wat er gebeurt als de inter-DC-koppeling faalt: (1) welke bipartiete helften blijven verbonden binnen elk DC, (2) welke verkeerstromen gaan door & welke stoppen, & (3) stel één architecturale wijziging voor die het systeem in staat stelt deze partitie te tolereren met beperkte degradatie in plaats van een volledige uitval.

Begeleidende notities

Begeleidende notities

Deze les over geometrie herformuleert de hoofdlees Ingress & Egress Separation als een analyse van een bipartiete graaf.

De volgende begeleidend, geometry_of_failure_modes_and_blast_radius, leidt tussenheidscentraliteit af (identificeert knelpuntknooppunten) & min-cut (beperkt de blast radius).

Goed gedaan.