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

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.

Tussenliggendheid: het gemarkeerde knooppunt ligt op de meeste kortste paden

Een systeem heeft: 100 externe clients -> 1 DNS -> 1 CDN-leverancier -> 3 reverse proxies -> 12 backend-replica's -> {1 primaire DB, 2 cache-knooppunten, 5 externe API-endpoints}. Rangschik deze knooppuntklassen op tussenliggendheid (van hoog naar laag) & leg uit waarom de twee hoogste rangen bijzondere aandacht verdienen.

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 als grens voor blast radius; diameter als propagatiedistans

Min-cut berekenen voor een echte architectuur

Een architectuur: 1 DNS, 1 CDN, 3 reverse proxies, 12 backend-replica's, 1 DB-primaire.

Bereken (of schat) de min-cut aan drie grenzen: (1) tussen externe clients en de reverse-proxy-laag; (2) tussen de reverse-proxy-laag en de backend-laag; (3) tussen de backend-laag en de DB-primaire. Noem voor elk wat er misgaat wanneer die min-cut wordt overschreden.

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 }.

Audit het systeem: (1) noem het knooppunt met de hoogste tussenliggendheid, (2) bereken de min-cut aan de meest zorgwekkende grens, & (3) stel twee specifieke architecturale wijzigingen voor (elke verhoogt een min-cut, elke genoemd met de grens die het versterkt).

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.