Каждый PoP владеет ячейкой плоскости
Тесселяция Вороного
Разместите N точек (PoP: точки присутствия) на плоскости. Проведите границы областей таким образом, чтобы каждая точка на плоскости была отнесена к ближайшему PoP. Результатом является диаграмма Вороного: плоскость разделяется на N ячеек, по одной на каждый PoP, каждая из которых содержит все точки, более близкие к её PoP, чем к любому другому.
Геометрия CDN: каждый запрос пользователя маршрутизируется к ближайшему PoP. Каждый PoP обслуживает ячейку географической плоскости. Границы ячеек являются перпендикулярными биссектрисами отрезков, соединяющих соседние PoP.
Геометрическая интерпретация:
- Добавление PoP уменьшает ячейки его соседей (& создаёт новую ячейку)
- Удаление PoP заставляет его ячейку перераспределиться между соседями (скачок нагрузки на соседей)
- Пользователь, находящийся вблизи границы ячейки, может переключаться между PoP по мере изменения балансировки нагрузки
- Сбой одного PoP увеличивает эффективную ячейку каждого соседа во время простоя
Операционное следствие: когда PoP выходит из строя, его нагрузка не исчезает; она мигрирует на соседние PoP. Если соседи рассчитаны только на свою обычную ячейку, скачок нагрузки приведёт к их последующему сбою (каскадный сбой PoP). Зрелые провайдеры CDN рассчитывают каждый PoP с учётом скачка нагрузки при отказе соседа.
Неравенство треугольника, от которого нельзя «сбежать»
Физика задает нижний предел
Свет распространяется со скоростью ~300 000 км/с в вакууме. В оптоволокне — около 200 000 км/с из-за показателя преломления. Это означает:
- ~1 000 км оптоволокна = ~5 мс в одну сторону = ~10 мс туда и обратно
- Сквозь США с побережья на побережье (~5 000 км) = минимум ~50 мс RTT
- США в Европу (~8 000 км) = минимум ~80 мс RTT
- Антаподальные точки (половина пути вокруг света) = минимум ~200 мс 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-на-B при каждой записи. Если расстояние между A и B составляет 100 мс, каждая запись занимает не менее 100 мс. Растянутые базы данных платят эту «цену» каждый раз.
Оплата нижнего предела
Сервис работает в двух регионах: US-East (us-east-1) и EU-West (eu-west-1). Расстояние между этими регионами составляет примерно 5 500 км. Первичная база данных сервиса находится в US-East. Запросы пользователей из ЕС обрабатываются бэкендами в EU-West, но каждая запись требует обратного вызова к первичной базе данных в US-East.
Проектирование географической пропускной способности
Синтез
Теперь вы можете интерпретировать ячейки Вороного как зоны обслуживания PoP, вычислять нижний предел задержки, ограниченный скоростью света, и применять кривую теории массового обслуживания на уровне прокси.
Примените все три.
Команда планирует покрытие CDN для сервиса с пользователями на трех континентах: Северная Америка (60% пользователей), Европа (30%), Азия (10%). В бюджете предусмотрено 6 PoP. Каждый PoP может обслуживать стабильную ячейку при загрузке 70%, не пересекая «колено» кривой очередей.
Завершение курса-компаньона
Завершение курса-компаньона
Вы завершили все пять сопутствующих уроков по геометрии:
- Прокси и источники: ориентированные графы, количество хопов, fan-in / fan-out, непрямолинейность
- Бессостояльное горизонтальное масштабирование: закон Литтла как площадь, кривая очередей и её «колено»
- Разделение входящего и исходящего трафика: двудольная структура, устранение вершин-разделителей, устойчивость к разделению
- Режимы отказов и радиус поражения: центральность между вершинами, минимальный разрез, диаметр
- Наблюдаемость и пропускная способность (этот урок): ячейки Вороного для точек присутствия (PoP), нижняя граница треугольника задержки, проектирование географической пропускной способности
Сквозная тема: распределённые системы имеют геометрическую структуру. Каждая архитектура — это граф. Каждая нижняя граница задержки — это неравенство треугольника. Каждое решение о пропускной способности — это кривая и её «колено». Как только вы видите геометрию, операционные решения вытекают из неё.
В сочетании с пятью основными уроками (cs_distsys_*) у вас есть рабочая ментальная модель веб-масштабной распределённой системы и графовая дисциплина для рассуждений о ней.
Молодец.