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

Elke PoP bezit een cel van het vlak

Voronoi-tegeling

Plaats N punten (PoPs: Points of Presence) op een vlak. Teken gebiedsgrenzen zodanig dat elk punt in het vlak wordt toegewezen aan de dichtstbijzijnde PoP. Het resultaat is een Voronoi-diagram: het vlak wordt opgedeeld in N cellen, één per PoP, waarbij elke cel alle punten bevat die dichter bij haar PoP liggen dan bij welke andere PoP dan ook.

CDN-geometrie: het verzoek van elke gebruiker wordt gerouteerd naar de dichtstbijzijnde PoP. Elke PoP bedient een cel van het geografische vlak. De celfgrenzen zijn de loodlijnen (middenstenden) van de lijnen tussen aangrenzende PoPs.

Geometrische interpretatie:

- Het toevoegen van een PoP verkleint de cellen van de buren (& creëert een nieuwe cel)

- Het verwijderen van een PoP dwingt zijn cel om zich te herverdelen naar de buren (capaciteitstoename bij de buren)

- Een gebruiker in de buurt van een celfront kan wisselen tussen PoP's wanneer de belastingverdeling verschuift

- Een uitval van één PoP vergroot de effectieve cel van elke buur tijdens de storing

Operationele consequentie: wanneer een PoP uitvalt, verdwijnt de belasting niet; deze migreert naar de omliggende PoP's. Als de buren alleen zijn dimensioneerd voor hun normale cel, zal de piekbelasting hen als volgende laten falen (kaskade van PoP-fouten). Volwassen CDN-aanbieders dimensioneren elke PoP met het oog op piekbelasting door buuruitval.

Voronoi-cellen rondom PoP's; één PoP-uitval vergroot de cellen van de buren

Een CDN draait 4 PoP's die het vasteland van de VS bedienen: West Coast, Mountain, Midwest en East Coast. Elke PoP is dimensioneerd voor ~25% van het totale Amerikaanse verkeer. De Mountain PoP faalt. Voorspel: (1) welke buur-PoP's nemen de herverdeelde belasting op, & in welke verhouding ongeveer, & (2) wat gebeurt er als die buren exact zijn dimensioneerd voor 25% elk zonder reservecapaciteit.

De driehoeksongelijkheid die je niet kunt omzeilen

Fysica bepaalt de vloer

Licht reist met ~300.000 km/s in vacuüm. In vezel is dat ongeveer 200.000 km/s door de brekingsindex. Dat betekent:

- ~1.000 km glasvezel = ~5 ms éénweg = ~10 ms rondreis

- Van kust tot kust in de VS (~5.000 km) = ~50 ms RTT minimum

- VS naar Europa (~8.000 km) = ~80 ms RTT minimum

- Antipodaal (halverwege om de wereld) = ~200 ms RTT minimum

Dit is een ondergrens. De werkelijke RTT is altijd groter (routerhops, schakelen, wachtrijen, congestie). Geen enkele applicatie kan sneller dan de natuurkunde toelaat.

Driehocksongelijkheid

Voor drie knooppunten A, B en C zegt de driehocksongelijkheid dat d(A,C) <= d(A,B) + d(B,C): een directe route is korter dan (of gelijk aan) een omweg.

Netwerkinterpretatie: als je dienst A -> B -> C routeert in plaats van A -> C direct, is de latentie minimaal de som van de latenties van de twee trajecten. Vaak zelfs meer door verwerking op B.

Architecturale lezing: elke indirecte verwijzing (proxy, load balancer, CDN-hop) voegt minimaal één rondetrip-been toe aan de door de gebruiker waargenomen latentie. Het voordeel van een CDN komt voort uit het verkorten van het been van de gebruiker (PoP dichter bij de gebruiker dan de originele server), ook al stijgt het totale aantal hops.

Multi-region valkuilen: een service die leest uit regio A maar schrijft naar regio B, ondervindt A-naar-B latentie bij elke schrijfoperatie. Als A & B 100 ms uit elkaar liggen, duurt elke schrijfoperatie minimaal >= 100 ms. Uitgestrekte databases betalen deze ondergrens elke keer opnieuw.

Latentie-driehoek: A-B-C ondergrens bepaald door fysieke afstand

Betaal de Ondergrens

Een service draait in twee regio's: US-East (us-east-1) & EU-West (eu-west-1). De twee regio's liggen ongeveer 5.500 km uit elkaar. De service heeft een primaire database in US-East. Verzoeken van EU-gebruikers worden afgehandeld door backends in EU-West, maar elke schrijfoperatie vereist een terugroep naar de primaire in US-East.

Bereken de latentie-ondergrens voor een schrijfoperatie van een EU-gebruiker (rondetrip van hun browser naar de EU-West backend, naar de US-East primaire en terug). Vergelijk dit met een leesoperatie van een EU-gebruiker die volledig wordt afgehandeld vanuit de gecachte staat in EU-West. Stel vervolgens één architecturale wijziging voor die de latentie-ondergrens voor schrijfoperaties van EU-gebruikers verlaagt.

Geografisch capaciteitsontwerp

Synthese

Je kunt nu Voronoi-cellen lezen als PoP-afvoergebieden, de lichtsnelheidslatentievloeren berekenen & de wachtrijcurve op de proxy-laag toepassen.

Pas alle drie toe.

Een team plant de CDN-dekking voor een service met gebruikers op drie continenten: Noord-Amerika (60% van de gebruikers), Europa (30%) en Azië (10%). Ze hebben budget voor 6 PoP's. Elke PoP kan een stabiele cel bedienen bij 70% benutting zonder de knie van de wachtrijcurve te overschrijden.

Ontwerp de PoP-plaatsing: (1) hoe zou je de 6 PoP's verdelen over de drie continenten, (2) voor het kleinste gebruikersaandeel (Azië met 10%), wat is de latencievloer voor een Aziatische gebruiker die wordt bediend vanuit een Europese PoP als er geen Aziatische PoP bestaat (aannemelijk ~9000 km afstand), en (3) welke capaciteitsmarge zou je per PoP vereisen om een uitval van één PoP te overleven zonder kaskade-effecten?

Afsluiten van de Begeleidendecursus

Afsluiten van de Begeleidendecursus

Je hebt alle vijf de begeleidende lessen over de geometrie van verdeelde systemen voltooid:

- Proxies & Origins: gerichte grafen, hop-aantal, fan-in / fan-out, indirecte verwijzingen

- Stateless horizontale schaling: Little's Law als oppervlakte, wachtrijcurve en het kniepunt ervan

- Scheiding van Ingress & Egress: tweepartiete structuur, eliminatie van knikpunten (cut vertices), tolerantie voor partities

- Foutmodi & Blast Radius: tussenheidscentraliteit, min-cut, diameter

- Observability & Capaciteit (deze les): Voronoi-POP-cellen, de ondergrens van de latenciedriehoek, geografisch capaciteitsontwerp

De rode draad: verdeelde systemen hebben een geometrische structuur. Elke architectuur is een graaf. Elke latenciedrempel is een driehoeksongelijkheid. Elke capaciteitsbeslissing is een curve en een kniepunt. Zodra je de geometrie ziet, volgen de operationele beslissingen daaruit.

Gecombineerd met de vijf hoofdlussen (cs_distsys_*) heb je een werkend mentaal model van een web-schaal verdeeld systeem en de graaftheoretische discipline om daarover te redeneren.

Goed gedaan.