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