Varje PoP äger en cell av planet
Voronoi-tessellering
Placera N punkter (PoPs: Points of Presence) på ett plan. Rita gränser för områdena så att varje punkt på planet tilldelas den närmaste PoP:en. Resultatet är ett Voronoi-diagram: planet delas upp i N celler, en per PoP, där varje cell innehåller alla punkter som ligger närmare dess PoP än någon annan.
CDN-geometri: varje användares begäran ruttas till den närmaste PoP:en. Varje PoP betjänar en cell av det geografiska planet. Cellgränserna är de vinkelräta bisectorerna av linjerna mellan grann-PoPs.
Geometrisk tolkning:
- Att lägga till en PoP krymper grannarnas celler (& skapar en ny cell)
- Att ta bort en PoP tvingar dess cell att omfördelas till grannar (kapacitetsökning hos grannarna)
- En användare nära en cellgräns kan växla mellan PoP:er när lastbalanseringen justeras
- En felaktighet i en PoP gör att varje granns effektiva cell utökas under avbrottet
Operationell konsekvens: när en PoP går sönder försvinner dess last inte; den migrerar till grann-PoP:er. Om grannarna är dimensionerade endast för sin normala cell, bryter ökningarna dem i sin tur (kaskad av PoP-fel). Mognade CDN-leverantörer dimensionerar varje PoP med hänsyn till ökning vid grannfel.
Triangelolikheten du inte kan fuska med
Fysiken sätter golvet
Ljus färdas med ~300 000 km/s i vakuum. I fiber är det cirka 200 000 km/s på grund av brytningsindex. Det innebär:
- ~1 000 km fiber = ~5 ms enkelriktad = ~10 ms tur och retur
- USA kust till kust (~5 000 km) = ~50 ms RTT minimum
- USA till Europa (~8 000 km) = ~80 ms RTT minimum
- Antipodala (halvvägs runt världen) = ~200 ms RTT minimum
Detta är en nedre gräns. Reell RTT är alltid större (routerrhopp, växling, köer, trängsel). Inget program kan gå snabbare än vad fysiken tillåter.
Triangelolikheten
För tre noder A, B, C säger triangelolikheten att d(A,C) <= d(A,B) + d(B,C): en direkt väg är kortare än (eller lika med) en indirekt väg.
Nätverksmässig tolkning: om din tjänst routar A -> B -> C istället för A -> C direkt, är latensen minst summan av latenserna för de två sträckorna. Ofta mer på grund av bearbetning vid B.
Arkitekturell tolkning: varje indirekt (proxy, lastbalanserare, CDN-hopp) lägger till minst ett rundtrippsben till användarens upplevda latens. CDN:s fördel ligger i att göra användarens ben kortare (PoP närmare än origo), även om det totala antalet hopp ökar.
Multi-region-fallgropar: en tjänst som läser från region A men skriver till region B drabbas av latens mellan A och B vid varje skrift. Om A och B är 100 ms ifrån varandra tar varje skrift minst 100 ms. Sträckta databaser betalar denna latensgolv varje gång.
Betala golvets pris
En tjänst körs i två regioner: US-East (us-east-1) och EU-West (eu-west-1). De två regionerna är ungefär 5 500 km ifrån varandra. Tjänsten har en primär databas i US-East. EU-användares begäranden hanteras av EU-West-bakändar, men varje skrift kräver ett sammanhang tillbaka till primären i US-East.
Geografisk kapacitetsdesign
Syntes
Du kan nu läsa Voronoi-celler som PoP-upptagningsområden, beräkna ljushastighetslatensgolv och tillämpa kökurvan på proxy-nivån.
Tillämpa alla tre.
Ett team planerar CDN-täckning för en tjänst med användare på tre kontinenter: Nordamerika (60 % av användarna), Europa (30 %) och Asien (10 %). De har budget för 6 PoP:er. Varje PoP kan serva en stabil cell vid 70 % utnyttjandegrad utan att överskrida knäet på kökurvan.
Avsluta kursen
Avsluta kursen
Du har slutfört alla fem systerlektioner inom geometrin för distribuerade system:
- Proxys & Ursprung: riktade grafer, hoppantal, in-/utflöde (fan-in / fan-out), indirektheter
- Statlös horisontell skalning: Littles lag som yta, kökurva och dess knä
- Separation av in- och utdata: bipartit struktur, eliminering av skiljehörn, tolerans för partitionering
- Felmoder & spridningsomfång: mellanliggande centralitet, minskärning, diameter
- Observabilitet & Kapacitet (denna lektion): Voronoi-PoP-celler, latenstriangelns nedre gräns, geografisk kapacitetsdesign
Genomgående tråd: distribuerade system har en geometrisk struktur. Varje arkitektur är en graf. Varje latensbotten är en triangelolikhet. Varje kapacitetsbeslut är en kurva och ett knä. När du ser geometrin, följer de operationella besluten av sig själva.
Sammanbundet med de fem huvudlektionerna (cs_distsys_*) har du nu en fungerande mental modell för ett webbskalat distribuerat system samt den grafteoretiska disciplinen att resonera kring det.
Bra jobbat.