Jeder PoP besitzt eine Zelle der Ebene
Voronoi-Tessellation
Platzieren Sie N Punkte (PoPs: Points of Presence) auf einer Ebene. Zeichnen Sie Regionsgrenzen so, dass jeder Punkt in der Ebene dem nächsten PoP zugeordnet wird. Das Ergebnis ist ein Voronoi-Diagramm: Die Ebene wird in N Zellen unterteilt, eine pro PoP, wobei jede Zelle alle Punkte enthält, die näher an ihrem PoP liegen als an jedem anderen.
CDN-Geometrie: Die Anfrage jedes Nutzers wird an den nächsten PoP geroutet. Jeder PoP bedient eine Zelle der geografischen Ebene. Die Zellgrenzen sind die senkrechten Mittelsenkrechten der Linien zwischen benachbarten PoPs.
Geometrische Lesart:
- Das Hinzufügen eines PoP verkleinert die Zellen seiner Nachbarn (& erstellt eine neue Zelle)
- Das Entfernen eines PoP zwingt seine Zelle, sich auf die Nachbarn umzuverteilen (Kapazitätsanstieg bei den Nachbarn)
- Ein Nutzer in der Nähe einer Zellgrenze kann zwischen PoPs wechseln, wenn sich das Lastausgleichsverhältnis verschiebt
- Ein Ausfall eines PoP vergrößert während der Störung die effektive Zelle jedes Nachbarn
Operative Konsequenz: Wenn ein PoP ausfällt, verschwindet seine Last nicht; sie wandert zu den benachbarten PoPs. Wenn die Nachbarn nur für ihre normale Zelle dimensioniert sind, bricht der Anstieg sie als Nächstes (kaskadierender PoP-Ausfall). Erfahrene CDN-Anbieter dimensionieren jeden PoP unter Berücksichtigung des Anstiegs bei einem Nachbarnausfall.
Die Dreiecksungleichung, der man nicht ausweichen kann
Physik setzt die Untergrenze
Licht bewegt sich im Vakuum mit ~300.000 km/s. In Glasfaser beträgt die Geschwindigkeit aufgrund des Brechungsindex etwa 200.000 km/s. Das bedeutet:
- ~1.000 km Glasfaser = ~5 ms in eine Richtung = ~10 ms Hin- und Rückweg
- USA von Küste zu Küste (~5.000 km) = ~50 ms RTT (Round-Trip-Time) Minimum
- USA nach Europa (~8.000 km) = ~80 ms RTT Minimum
- Antipodaler Punkt (halber Weg um die Welt) = ~200 ms RTT Minimum
Dies ist eine Untergrenze. Die tatsächliche RTT ist immer größer (Router-Hops, Switching, Wartezeiten in Warteschlangen, Netzwerkstau). Keine Anwendung kann schneller sein, als es die Physik erlaubt.
Dreiecksungleichung
Für drei Knoten A, B, C besagt die Dreiecksungleichung, dass d(A,C) <= d(A,B) + d(B,C) gilt: Ein direkter Weg ist kürzer (oder gleich lang) als jeder indirekte Weg.
Netzwerk-Interpretation: Wenn Ihr Dienst den Weg A -> B -> C statt direkt A -> C nimmt, beträgt die Latenzzeit mindestens die Summe der Latenzen der beiden Teilstrecken. Oft ist sie sogar höher aufgrund der Verarbeitung an Knoten B.
Architektonische Einordnung: Jede Indirektion (Proxy, Load Balancer, CDN-Hop) fügt der vom Nutzer wahrgenommenen Latenz mindestens ein Rundlauf-Bein hinzu. Der Vorteil eines CDNs besteht darin, das Bein des Nutzers zu verkürzen (PoP näher am Nutzer als der Origin), selbst wenn die Gesamtanzahl der Hops steigt.
Mehrrregionale Fallen: Ein Dienst, der aus Region A liest, aber in Region B schreibt, verursacht bei jedem Schreibvorgang die Latenz von A nach B. Wenn A und B 100 ms voneinander entfernt sind, dauert jeder Schreibvorgang mindestens 100 ms. Stretched Databases zahlen diesen Latenzboden jedes Mal.
Den Boden bezahlen
Ein Dienst läuft in zwei Regionen: US-East (us-east-1) und EU-West (eu-west-1). Die beiden Regionen sind etwa 5.500 km voneinander entfernt. Der Dienst hat eine Primär-Datenbank in US-East. Anfragen von EU-Nutzern werden von Backends in EU-West bedient, aber jeder Schreibvorgang erfordert einen Rückruf an die Primär-Datenbank in US-East.
Geografisches Kapazitätsdesign
Synthese
Sie können nun Voronoi-Zellen als PoP-Einzugsgebiete lesen, die Lichtgeschwindigkeits-Verzögerungsuntergrenzen berechnen und die Warteschlangenkurve auf der Proxystufe anwenden.
Wenden Sie alle drei an.
Ein Team plant die CDN-Abdeckung für einen Dienst mit Nutzern auf drei Kontinenten: Nordamerika (60 % der Nutzer), Europa (30 %) und Asien (10 %). Sie haben ein Budget für 6 PoPs. Jeder PoP kann eine stabile Zelle bei 70 % Auslastung bedienen, ohne die Knie der Warteschlangenkurve zu überschreiten.
Abschluss des Begleitkurses
Abschluss des Begleitkurses
Du hast alle fünf Begleitlektionen zu Geometrie abgeschlossen:
- Proxys & Ursprünge: gerichtete Graphen, Hop-Anzahl, Fan-in / Fan-out, Indirektion
- Stateless horizontale Skalierung: Little’s Law als Fläche, Warteschlangenkurve & ihr Knickpunkt
- Trennung von Ingress & Egress: bipartite Struktur, Eliminierung von Schnittknoten, Partitionstoleranz
- Fehlertypen & Auswirkungsbereich: Betweenness-Zentralität, Minimal-Schnitt, Durchmesser
- Beobachtbarkeit & Kapazität (diese Lektion): Voronoi-PoP-Zellen, Latenzdreieck-Untergrenze, geografisches Kapazitätsdesign
Der rote Faden: Verteilte Systeme haben eine geometrische Struktur. Jede Architektur ist ein Graph. Jede Latenz-Untergrenze ist eine Dreiecksungleichung. Jede Kapazitätsentscheidung ist eine Kurve & ein Knickpunkt. Sobald man die Geometrie erkennt, ergeben sich die operativen Entscheidungen daraus.
In Kombination mit den fünf Hauptlektionen (cs_distsys_*) hast du ein funktionierendes mentales Modell eines verteilten Systems im Web-Maßstab sowie die graphentheoretische Disziplin, um darüber nachzudenken.
Gut gemacht.