English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gäst
1 / ?

Varje PoP äger en cell i planet

Voronoi-täthet

Placera N punkter (PoPs: närvaropunkter) på en yta. Rita områdesgränser så att varje punkt på ytan tilldelas den närmaste PoP. Resultatet är en Voronoi-diagram: planet delas in i N celler, en per PoP, var och en innehållande alla punkter närmre sin PoP än någon annan.

CDN-geometri: varje användares begäran routas till den närmaste PoP. Varje PoP tjänar en cell på det geografiska planet. Cellgränserna är den senare halva av linjerna mellan intilliggande PoPs.

Geometrisk läsning:

- Lägga till en PoP minskar cellerna för dess grannar (& skapar en ny cell)

- Ta bort en PoP tvingar dess cell att omfördela till grannar (kapacitetsökning på grannar)

- En användare nära en cellgräns kan växla mellan PoPs som belastningsutjämning skiftar

- En fel på en PoP förstorar varje granne effektiv cell under utrymmet

Operativ konsekvens: när en PoP misslyckas försvinner dess belastning inte; den migrerar till intilliggande PoPs. Om grannar är dimensionerade endast för sitt normala cell, bryter överfördelningen dem nästa (cascading PoP-fel). Mogen CDN-leverantör dimensionerar varje PoP med tanke på överföringslyckor i grannar.

! Voronoi-cell runt PoPs; en PoP-fel förstorar grann-cellerna

En CDN kör 4 PoPs som servar kontinentala USA: Västkusten, bergen, Mellanvästern, Östkusten. Varje är dimensionerad för ~25% av totalt amerikanskt trafik. Mountain PoP misslyckas. Prognostisera: (1) vilka grann-PoPs absorberar den omfördelade belastningen och i ungefärligt vilken proportion, & (2) vad som händer om dessa grannar var dimensionerade exakt för 25% vardera utan utrymme för förbättring.

Den oåterkalleliga olikheten du inte kan lura

Fysik sätter golvet

Ljus reser sig på ~300,000 km/s i vakuum. I fiber, cirka 200,000 km/s på grund av refraktionsindex. Det innebär:

- ~1,000 km fiber = ~5 ms enkel resa = ~10 ms rundtur

- USA till USA (~5 000 km) = ~50 ms min RTT

- USA till Europa (~8 000 km) = ~80 ms min RTT

- Motståndsräta (mitt i jordklotet) = ~200 ms min RTT

Detta är en bottenlinje. Den verkliga RTT är alltid större (routningshopp, omkoppling, köer, trängsel). Ingen applikation kan gå fortare än fysik tillåter.

Triangleolikheten

För tre noder A, B, C säger triangleolikheten att d(A,C) <= d(A,B) + d(B,C): en direkt väg är kortare (eller lika lång) än (eller lika med) någon indirekt väg.

Nätverksläsning: om ditt tjänstvägar A -> B -> C i stället för A -> C direkt, är latensen minst lika med summan av två benlatenser. Ofta mer på grund av bearbetning på B.

Arkitektur läsning: varje indirektion (proxy, lastbalanserare, CDN-hopp) lägger till minst en rundgångsben till användarens upplevda latens. CDN-fördelarna kommer från att göra användarens ben kortare (PoP närmare än ursprung), även om det totala antalet hopp ökar.

Flera regioner fällor: en tjänst som läser från region A men skriver till region B innebär att A-till-B-latensen uppkommer på varje skrivning. Om A & B är 100 ms ifrån varandra, tar varje skrivning >= 100 ms minst. Sträckta databaser betalar den här golvet varje gång.

Latens-triangel: A-B-C-golvet bestäms av fysisk avstånd

Betal den Botten

En tjänst körs i två regioner: USA Öst (us-east-1) & EU-Väst (eu-west-1). De två regionerna är ungefär 5 500 km ifrån varandra. Tjänsten har en primär databas i USA Öst. EU-användare har sina begäranden servade av EU-Väst-backends, men varje skrivning kräver en återgång till USA Öst primärt.

Beräkna latensgolvet för en EU-skribande (rundtur från deras webbläsare till EU-Väst-backend till USA Öst primärt & tillbaka). Jämför med en EU-användare som servs hela tiden från EU-Väst-cached status. Föreslå sedan en arkitekturförändring som minskar latensgolvet för EU-användare som skriver.

Geografisk kapacitetsdesign

Syntes

Du kan nu läsa Voronoi-cellerna som PoP-avrinningsområden, beräkna ljusets hastighet latensgolv och tillämpa köpkurvan på proxy-nivån.

Tillämpa alla tre.

En grupp planerar CDN-coverage för ett tjänst med användare på tre kontinenter: Nordamerika (60% av användarna), Europa (30%), Asien (10%). De har budget för 6 PoPs. Varje PoP kan servera en stadig cell på 70% utnyttjande utan att överskrida köpkurvens knä.

Designa PoP-placeringen: (1) hur skulle du fördela 6 PoPs över de tre kontinenterna, (2) för den minsta användarandelen (Asien på 10%) vilket är latensgolvet för en Asien-användare som servs från ett Europa PoP om inget Asien PoP finns (antecka ~9000 km avstånd) & (3) vilket kapacitetsöverskott skulle du kräva per PoP för att överleva en enskild PoP-fel utan kaskader?

Stäng Companion-kursen

Stäng Companion-kursen

Du har slutfört alla fem geometri-* kompanjonslår:

- Proxies & Origins: riktade grafer, hoppantal, fan-in / fan-out, indirektion

- Stateless Horizontal Scaling: Littles lag som area, köpkurva & dess knä

- Ingress & Egress Separation: bipartit struktur, snittverkssläckning, partitionsstabilitet

- Failure Modes & Blast Radius: mellanhetssäkerhet, min-snitt, diameter

- Observability & Capacity (denna): Voronoi PoP-cell, latenstriangelns golv, geografisk kapacitetsdesign

Genomgången: distribuerade system har geometrisk struktur. Varje arkitektur är en graff. Varje latensgolv är en triangellikhet. Varje kapacitetsbeslut är en kurva & ett knä. När du ser geometrin följer operationella beslut av den.

Tillsammans med de fem huvudlektionerna (cs_distsys_*), har du ett fungerande mentalt mönster för ett webb-skala distribuerat system och den graff-teoretiska disciplinen att resonera om det.

Bra gjort.