De knelpuntknoop geïdentificeerd voordat het verkeer arriveert
Betweenness-centraliteit
Voor elk paar knooppunten in een graaf is er een kortste pad tussen hen. De betweenness-centraliteit van knooppunt N = het aandeel van alle kortste paden dat door N loopt.
Een knooppunt met hoge betweenness ligt op het pad tussen veel andere paren. Als het vertraagt, vertragen veel stromen. Als het faalt, breken veel stromen.
Architectonische interpretatie: knooppunten met hoge betweenness zijn degenen waaraan elke architectuurbeoordeling extra aandacht moet besteden. Ze zijn tegelijk knelpunten, SPOFs en capaciteitskritische componenten. Ze neigen ertoe om:
- De DNS-provider (tussen elke client & elke service)
- De ingress-proxy (tussen elke client & elke backend)
- De primaire database (tussen elke backend & elke leesoperatie)
- De authenticatieservice (tussen elke gebruiker & elke geautoriseerde actie)
Detectie zonder meting: de graafstructuur alleen identificeert al knooppunten met hoge tussenliggendheid. Je hebt geen verkeerdata nodig; je hebt de architectuurschets nodig. Een knooppunt dat zich tussen veel paren van andere knooppunten bevindt, is structureel kritiek.
Operationele consequentie: knooppunten met hoge tussenliggendheid verdienen een disproportionele investering in (1) capaciteitsmarge, (2) redundantie, (3) observeerbaarheid & (4) incidentreactie-protocollen.
De kleinste snijding isoleert het kleinste deel
Min-Cut-stelling in eenvoudige termen
De min-cut tussen twee knooppunten in een graf = het kleinste aantal randen (of knooppunten) dat je moet verwijderen om ze van elkaar te scheiden.
Operationele interpretatie: de min-cut bepaalt de grens voor de ergste mogelijke impact (blast radius). Als de min-cut tussen 'clients' & 'database' 1 rand is (een enkele proxy), dan leidt het verlies van die rand tot een volledige scheiding van alle clients van de database. Als de min-cut 5 is, moet je 5 componenten tegelijk verliezen om ze volledig van elkaar te scheiden; dat is pech, maar wel begrensd.
Ontwerpen voor blast radius: verhoog de min-cut aan elke belangrijke grens. Meerdere proxies; meerdere cache-knooppunten; meerdere netwerkpaden tussen datacenters. Elke toevoeging verhoogt de min-cut met 1.
Het bulkhead-patroon in graaftermen: verdeel resources in aparte deelgrafieken die geen min-cut met elkaar delen. Een falen binnen één deelgrafiek kan zich niet verspreiden naar de anderen, omdat de randen niet bestaan.
Diameter bepaalt de verspreidingsafstand van falen
Graf-diameter = de langste kortste pad tussen twee willekeurige knooppunten.
Verspreiding van falen: wanneer een knooppunt faalt en retries terugvloeien, raken ze stroomopwaartse knooppunten tot op de diameter-afstand. Een systeem met diameter-3 (client -> proxy -> backend -> DB) betekent dat een DB-falen 3 stroomopwaartse lagen raakt in een retry-storm.
Gevolg: kortere diameter = snellere insluiting van falen, maar ook meer concentratie van knooppunten. Elk ontwerp heeft zijn eigen afwegingen.
Min-cut berekenen voor een echte architectuur
Een architectuur: 1 DNS, 1 CDN, 3 reverse proxies, 12 backend-replica's, 1 DB-primaire.
Audit van falingsmodi via graafmetrieken
Synthese
Je kunt nu knooppunten met hoge tussenliggendheid identificeren, de min-cut berekenen aan elke grens, & de afstand van foutuitbreiding schatten via de diameter.
Pas alle drie toe.
Een systeem: 50 klantendpunten -> 1 DNS -> 2 CDN-POP's -> 4 reverse proxies -> 16 backend-replica's -> { DB-cluster (1 primaire + 2 standbys), Redis-cluster (5 knooppunten), 3 externe API's }.
Begeleidend notities
Begeleidend notities
Deze les over geometrie herformuleert de hoofdlus Failure Modes & Blast Radius via graafmetrieken (betweenness, min-cut, diameter).
De laatste begeleider, geometry_of_observability_and_capacity, behandelt Voronoi-cellen voor CDN PoP-afvanggebieden, de snelheid-van-licht-bodem van de latenciedriehoek & de wachtrijcurve herbekeken op het proxy-niveau.
Goed gedaan.