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

un

гость
1 / ?
назад к урокам

Каждому PoP принадлежит ячейка плоскости

Вороной разбиение

Разместите N точек (PoPs: точки присутствия) на плоскость. Нарисуйте границы регионов так, чтобы каждый пункт на плоскости был присвоен ближайшему PoP. Результатом становится Вороной диаграмма: плоскость делится на N ячеек, одну для каждого PoP, каждая из которых содержит все точки, ближе к своему PoP, чем к любому другому.

Геометрия CDN: каждая запрос пользователя направляется к ближайшему PoP. Каждый PoP обслуживает ячейку географической плоскости. Границы ячеек - это перпендикулярные bisectors линий между соседними PoPs.

Геометрическое чтение:

- Добавление PoP уменьшает ячейки соседей (& создает новую ячейку)

- Удаление PoP заставляет его ячейку перераспределиться к соседям (повышение емкости у соседей)

- Пользователь возле границы ячейки может переключаться между PoPs при сдвиге балансировки нагрузки

- Сбой одного PoP увеличивает размер каждой соседней ячейки во время отключения

Операционное следствие: когда PoP выходит из строя, его нагрузка не исчезает; она мигрирует к соседним PoPs. Если соседним PoPs размерено только для их обычной ячейки, перенапряжение приводит к следующему (каскадное отключение PoP). Зрелые поставщики CDN размеряют каждый PoP с учетом возможного перераспределения нагрузки на соседние PoPs.

Ячейки Вороного вокруг PoPs; один сбой PoP увеличивает размер соседних ячеек

CDN обслуживает 4 PoPs, обслуживающих континентальную США: Западное побережье, Горное, Средний Запад, Восточное побережье. Каждый из них предназначен для обслуживания ~25% общего трафика США. PoP Горное выходит из строя. Прогноз: (1) какие соседние PoPs поглощают перераспределенный нагрузку и в примерно каких пропорциях, и (2) что произойдет, если те соседи были размерены точно на 25% каждый без запаса места.

Треугольная неравенство, которое нельзя обмануть

Физика устанавливает нижнюю планку

Свет распространяется со скоростью ~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 минимум. Расширенные базы данных платят этот пол каждый раз.

Треугольник задержки: A-B-C, пол устанавливается физической дистанцией

Оплачивать пол

Сервис работает в двух регионах: US-East (us-east-1) & EU-West (eu-west-1). Две регионы находятся примерно на расстоянии 5,500 км друг от друга. Сервис имеет основную базу данных в US-East. Пользователи из EU обслуживаются их backend в EU-West, но каждая запись требует вызова обратно в основную базу данных US-East.

Вычислите задержку пола для записи пользователя в EU (обратный путь от их браузера к backend EU-West в US-East & обратно). Сравните с задержкой пола для чтения пользователя, полностью обслуживаемого из EU-West, с использованием кэша. Затем предложите одну архитектурную изменение, снижающую задержку пола для записи пользователей из EU.

Географическое проектирование емкости

Синтез

Теперь вы можете читать ячейки Вороного как водоохранные зоны PoP, вычислять нижнюю грань скорости света, и применять кривую очереди на уровне прокси.

Примените все три.

Команда планирует покрытие CDN для сервиса с пользователями на трех континентах: Северная Америка (60% пользователей), Европа (30%), Азия (10%). У них есть бюджет для 6 PoP. Каждый PoP может обслуживать стабильную ячейку на 70% загрузки без пересечения коленом кривой очереди.

Проектирование размещения PoP: (1) как бы вы распределили 6 PoP по трем континентам, (2) для наименьшего доли пользователей (Азия, 10%) какова задержка пола для пользователя из Азии, обслуживаемого из PoP Европы, если нет PoP в Азии (предполагается, что расстояние составляет ~9000 км), и (3) какой запас емкости вы потребовали бы на каждый PoP для переживания одиночной потери PoP без последующего каскадирования?

Закрытие сопутствующего курса

Закрытие сопутствующего курса

Вы завершили все пять геометрических уроках-сопутствующих:

- Прокси & Источники: направленные графы, количество переходов, вложенность / разветвленность, косвенность

- Stateless Horizontal Scaling: Закон Литтла как площадь, кривая очереди и ее колено

- Вход и Выход: бипартитная структура, удаление вершин разрыва, толерантность разделения

- Режимы отказа & Радиус взрыва: междуцентрическая точность, минимальный разрез, диаметр

- Наблюдаемость & Мощность (этот): ячейки PoP Вороного, нижняя треугольная грань задержки, географическая дисциплина мощности

Основная идея: распределенные системы имеют геометрическую структуру. Каждая архитектура - это граф. Каждая нижняя грань задержки - это неравенство треугольника. Каждое решение по мощности - это кривая и колено. Когда вы видите геометрию, операционные решения следуют из нее.

В сочетании с пятью основными уроками (cs_distsys_*), у вас есть работающий модельный подход к веб-размеренной распределенной системе и графо-теоретической дисциплине для рассуждения о ней.

Хорошая работа.