Перейти к содержимому

Краткий курс по проектированию систем: масштабирование от 100 до 100 млн пользователей

System Design Lab

0:00 / 0:00

Краткий курс по проектированию систем: масштабирование от 100 до 100 млн пользователей

11 305 просмотров · 2 мес. назад
System Design Lab
11,3 тыс. подписчиков
11 305 просмотров · 2 мес. назад
Полный курс по масштабированию систем: кэширование, шардинг, очереди, балансировка нагрузки, отказоустойчивость и многорегиональность, от 100 до 100 миллионов пользователей. Этот курс начинается с одной системы t3.micro, обслуживающей 100 человек, и постепенно, шаг за шагом, преодолевает узкое место, чтобы создать архитектуру, обслуживающую сто миллионов пользователей. Сначала устанавливаются инструменты: RED и USE, объясняется, почему среднее значение скрывает реальное значение p99, которое ощущают пользователи, и как трассировка запроса позволяет определить, какой сервис работает медленно. Затем дается описание проблемы: каждая проблема масштабирования, которую вы когда-либо будете диагностировать, связана с вычислениями, чтением, записью или асинхронной работой. Вы покупаете более мощную систему, наблюдаете за реальным случаем Datadog, где одна строка SQL-запроса превзошла обновление оборудования, и находите точки, где вертикальное масштабирование терпит неудачу, а закон Амдала объясняет, почему пропускная способность в конечном итоге падает. Горизонтальный подход приводит к отсутствию состояния, DNS, уровням трафика L4 и L7, проверкам работоспособности, которые приводят к сбоям во всей сети, и автоматическому масштабированию на перегруженном сигнале вместо ЦП. Раздел чтения охватывает постраничную обработку курсора, реплики чтения и ошибку репликации, создаваемую задержкой при чтении и записи, математику коэффициента попадания, не зависящую от кэша, материализованные представления, распределение нагрузки при записи и чтении, «грохочущие стаи», горячие клавиши с реальным инцидентом в Twitter и минимальную скорость, которую преодолевает CDN. Раздел записи охватывает исчерпание соединений, усиление записи, функциональное разделение, шардинг и горячие разделы, решардинг, полиглотную персистентность и CQRS. Асинхронная работа включает в себя очереди против тем, идемпотентность и почему принцип «точно один раз» — это маркетинг, каковы издержки упорядочивания в пропускной способности, скрытую потерю сообщений, транзакционный исходящий ящик и обратное давление. Затем видео поворачивается само против себя: после определенного размера масштабирование усугубляет сбои. Повторные попытки подключения в условиях штормов, каскадные сбои, распространение срабатывания дедлайнов, автоматические выключатели, сброс нагрузки, ограничение скорости и определение того, что допустимо для сбоев. Заканчивается обсуждением многозональных и многорегиональных режимов, активного-активного и активного-пассивного режимов, CAP, радиуса поражения на основе ячеек, реального счета, включая исходящий трафик и многоуровневое распределение данных, а также дерева решений из четырех вопросов для 2 часов ночи. ━━━━━━━━━━━━━━━━━━━━━━━━ СВЯЖИТЕСЬ СО МНОЙ 🔗 LinkedIn:   / joud-awad   📝 Medium:   / joudwawad   ━━━━━━━━━━━━━━━━━━━━━━━━━ Главы: 0:00 Что вы узнаете: от 100 до 100 миллионов пользователей 1:25 Задержка, пропускная способность, емкость: три разных вещи 2:15 Вертикальное против горизонтального: только два направления 2:48 Четыре оси: вычисления, чтение, запись, асинхронность 3:57 100 пользователей: базовый уровень монолита 4:34 RED и USE: два метода наблюдения за системой 5:08 Почему средние значения лгут: P90, P99 и хвост 6:01 Трассировка: как определить, какая часть на самом деле работает медленно 6:51 10K пользователей: покупка более мощного устройства 7:53 Отсутствующий индекс, который превзошел обновление оборудования 8:47 Где вертикальное масштабирование действительно терпит неудачу 9:25 Закон универсальной масштабируемости: когда сервер замедляет работу 10:34 100K пользователей: отсутствие состояния перед дублированием 11:43 Уровни трафика: DNS, L4 и L7 12:38 Когда проверка работоспособности вызывает сбой 13:38 Автомасштабирование по правильному сигналу, а не по ЦП 14:45 Пагинация: смещение против курсора 15:28 Реплики для чтения и репликация задержка 16:04 Чтение и запись данных 16:42 Кэширование в сторону и математика коэффициента попаданий 17:28 Аннулирование кэша: TTL, сквозная запись, явное исключение 18:12 Материализованные представления: кэшируйте ответ, а не строку 18:57 Распределение при записи против распределения при чтении 20:05 Грохочущий поток и давка кэша 21:04 Горячие клавиши и вопрос о несущем нагрузку кэше 22:21 CDN и порог скорости света 23:39 5 миллионов пользователей: пулирование соединений и исчерпание 24:46 Пакетная обработка и усиление записи 25:31 Функциональное разделение: разделение по возможностям в первую очередь 26:18 Шардинг и горячие разделы 27:09 Перешардинг и согласованное хеширование 28:09 Правильный инструмент для работы: поиск, временные ряды, графы 28:46 CQRS: одна модель для написания, Еще один материал для чтения 29:25 20 млн пользователей: что пользователю действительно нужно прямо сейчас 30:23 Очереди против тем 31:13 Идемпотентность и почему принцип «точно один раз» — это маркетинг 32:12 Стоимость упорядочивания влияет на пропускную способность 33:00 Ск...