Каждому PoP принадлежит ячейка плоскости
Вороной разбиение
Разместите N точек (PoPs: точки присутствия) на плоскость. Нарисуйте границы регионов так, чтобы каждый пункт на плоскости был присвоен ближайшему PoP. Результатом становится Вороной диаграмма: плоскость делится на N ячеек, одну для каждого PoP, каждая из которых содержит все точки, ближе к своему PoP, чем к любому другому.
Геометрия CDN: каждая запрос пользователя направляется к ближайшему PoP. Каждый PoP обслуживает ячейку географической плоскости. Границы ячеек - это перпендикулярные bisectors линий между соседними PoPs.
Геометрическое чтение:
- Добавление PoP уменьшает ячейки соседей (& создает новую ячейку)
- Удаление PoP заставляет его ячейку перераспределиться к соседям (повышение емкости у соседей)
- Пользователь возле границы ячейки может переключаться между PoPs при сдвиге балансировки нагрузки
- Сбой одного PoP увеличивает размер каждой соседней ячейки во время отключения
Операционное следствие: когда PoP выходит из строя, его нагрузка не исчезает; она мигрирует к соседним PoPs. Если соседним PoPs размерено только для их обычной ячейки, перенапряжение приводит к следующему (каскадное отключение PoP). Зрелые поставщики CDN размеряют каждый PoP с учетом возможного перераспределения нагрузки на соседние PoPs.
Треугольная неравенство, которое нельзя обмануть
Физика устанавливает нижнюю планку
Свет распространяется со скоростью ~300,000 км/с в вакууме. В волокне около 200,000 км/с из-за коэффициента преломления. То есть:
- ~1,000 км волокна = ~5 мс одномоментно = ~10 мс круговой
- Coast-to-coast US (~5,000 км) = ~50 ms RTT минимум
- US в Европу (~8,000 км) = ~80 ms RTT минимум
- Противоположный (на половине пути вокруг мира) = ~200 ms RTT минимум
Это пол. В реальности RTT всегда больше (перемещение пакетов, переключение, очереди, перегрузка). Никакое приложение не может работать быстрее, чем это позволяет физика.
Треугольная неравенство
Для трех узлов A, B, C, треугольное неравенство говорит о том, что d(A,C) <= d(A,B) + d(B,C): прямой путь короче (или равен) любому косому пути.
Сетевое чтение: если ваш сервис маршрутизирует A -> B -> C вместо A -> C напрямую, задержка будет не менее суммы двух отрезков задержек. Часто больше из-за обработки в B.
Архитектурное чтение: каждое косое обращение (прокси, балансировщик нагрузки, переход через CDN) добавляет, как минимум, один круговой путь для задержки, воспринимаемой пользователем. CDN выигрывает из-за сокращения задержки пользователя (PoP ближе, чем исходный адрес), даже если общее количество переходов растет.
Локальные ловушки: сервис, который читает из региона A, но записывает в регион B, вызывает задержку A-to-B на каждой записи. Если A & B находятся на 100 ms друг от друга, каждая запись занимает >= 100 ms минимум. Расширенные базы данных платят этот пол каждый раз.
Оплачивать пол
Сервис работает в двух регионах: US-East (us-east-1) & EU-West (eu-west-1). Две регионы находятся примерно на расстоянии 5,500 км друг от друга. Сервис имеет основную базу данных в US-East. Пользователи из EU обслуживаются их backend в EU-West, но каждая запись требует вызова обратно в основную базу данных US-East.
Географическое проектирование емкости
Синтез
Теперь вы можете читать ячейки Вороного как водоохранные зоны PoP, вычислять нижнюю грань скорости света, и применять кривую очереди на уровне прокси.
Примените все три.
Команда планирует покрытие CDN для сервиса с пользователями на трех континентах: Северная Америка (60% пользователей), Европа (30%), Азия (10%). У них есть бюджет для 6 PoP. Каждый PoP может обслуживать стабильную ячейку на 70% загрузки без пересечения коленом кривой очереди.
Закрытие сопутствующего курса
Закрытие сопутствующего курса
Вы завершили все пять геометрических уроках-сопутствующих:
- Прокси & Источники: направленные графы, количество переходов, вложенность / разветвленность, косвенность
- Stateless Horizontal Scaling: Закон Литтла как площадь, кривая очереди и ее колено
- Вход и Выход: бипартитная структура, удаление вершин разрыва, толерантность разделения
- Режимы отказа & Радиус взрыва: междуцентрическая точность, минимальный разрез, диаметр
- Наблюдаемость & Мощность (этот): ячейки PoP Вороного, нижняя треугольная грань задержки, географическая дисциплина мощности
Основная идея: распределенные системы имеют геометрическую структуру. Каждая архитектура - это граф. Каждая нижняя грань задержки - это неравенство треугольника. Каждое решение по мощности - это кривая и колено. Когда вы видите геометрию, операционные решения следуют из нее.
В сочетании с пятью основными уроками (cs_distsys_*), у вас есть работающий модельный подход к веб-размеренной распределенной системе и графо-теоретической дисциплине для рассуждения о ней.
Хорошая работа.