• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Магистратура 2025/2026

Высоконагруженные системы и оптимизация кода (семинар наставника)

Статус: Курс обязательный (Компьютерные системы и сети)
Когда читается: 1-й курс, 1-4 модуль
Охват аудитории: для своего кампуса
Язык: русский
Контактные часы: 40

Программа дисциплины

Аннотация

Данный семинар представляет собой погружение в принципы проектирования и эксплуатации высоконагруженных систем, способных эффективно обрабатывать значительные объемы данных и запросов при сохранении надежности и производительности. Программа курса строится на фундаментальных концепциях из известной работы Мартина Клепмана "Designing Data-Intensive Applications", рассматривая архитектурные подходы к построению масштабируемых решений, управление распределенными транзакциями, стратегии репликации и шардирования данных, а также механизмы обеспечения согласованности в распределенных средах. Участники изучат ключевые характеристики высоконагруженных систем, включая их устойчивость к сбоям, способность к горизонтальному масштабированию и эффективное распределение нагрузки. Курс также включает практическое изучение паттернов проектирования распределенных систем и рассматрение реальных шаблонов, применяемых в индустрии для создания надежных сервисов. Слушатели освоят методы балансировки нагрузки, кэширования, управления очередями и обработки ошибок, а также познакомятся с современными подходами к мониторингу и тестированию производительности. По завершении семинара участники будут обладать комплексным пониманием архитектурных решений, необходимых для разработки и поддержки систем, способных выдерживать высокие нагрузки в условиях реального времени
Цель освоения дисциплины

Цель освоения дисциплины

  • Освоить фундаментальные принципы проектирования высоконагруженных систем, обеспечивающих эффективную обработку значительных объемов данных и запросов при сохранении надежности, производительности и удобства сопровождения в условиях реального времени.
  • Изучить архитектурные подходы к построению масштабируемых решений, включая стратегии репликации, шардирования данных, методы обеспечения согласованности и механизмы обработки частичных отказов в распределенных средах.
  • Развить способность проектировать отказоустойчивые системы с применением современных паттернов распределенных систем, методов балансировки нагрузки, кэширования, управления очередями и обработки ошибок в соответствии с промышленными стандартами.
  • Изучить модели транзакций и уровни изоляции, необходимые для обеспечения целостности данных в условиях конкурентного доступа, включая понимание аномалий (грязные операции чтения и записи, асимметрия чтения, потерянные обновления) и методов их предотвращения, а также освоить принципы достижения консенсуса в распределенных системах.
  • Развить компетенции в анализе и выборе оптимальных моделей данных (документной, реляционной, графовой) и соответствующих языков запросов в зависимости от специфики бизнес-требований, а также освоить методы проектирования и реализации подсистем хранения и извлечения данных для эффективной обработки как OLTP, так и OLAP рабочих нагрузок с учетом особенностей различных типов индексов и структур хранения.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает основные принципы проектирования информационных систем, включая классификацию сбоев (аппаратные, программные, человеческие)
  • Знает методы количественной оценки нагрузки и производительности, а также ключевые подходы к обеспечению надежности, масштабируемости и удобства сопровождения в высоконагруженных приложениях.
  • Умеет анализировать существующие системы на предмет их соответствия требованиям надежности и масштабируемости, выбирать и обосновывать оптимальные стратегии проектирования для конкретных сценариев использования
  • Знает историю эволюции моделей данных, включая иерархическую, реляционную, документоориентированную и графовую модели
  • Знает и понимает основные преимущества, ограничения и области применения, моделей данных (иерархическая, реляционная, документоориентированная и графовая) включая различия в подходах к схемам данных
  • Умеет выбирать оптимальную модель данных и соответствующую СУБД для конкретных сценариев использования, обосновывая выбор на основе анализа структуры данных, типов запросов и требований к масштабируемости
  • Понимать принципы проектирования эффективных запросов и структуры данных в зависимости от выбранной модели, а также осознает ограничения универсальных решений и важность применения специализированных систем для узкоспециализированных задач, таких как геномный анализ, обработка физических данных или полнотекстовый поиск.
  • Знает фундаментальные различия между OLTP и OLAP системами, включая их паттерны доступа к данным, типичные узкие места (время перехода на диске для OLTP и пропускная способность для OLAP), а также основные архитектурные подходы к реализации систем хранения: журналированные (LSM-деревья, SS-таблицы) и системы с обновлением на месте (B-деревья).
  • Умеет выбирать оптимальную подсистему хранения данных в зависимости от характера нагрузки и требований приложения, обосновывая выбор между OLTP и OLAP решениями, а также между различными типами индексов и структур хранения в соответствии со спецификой бизнес-задач.
  • Знает принципы организации кодирования данных для распределенных систем, включая различия между языкозависимыми форматами, текстовыми форматами (JSON, XML, CSV) и схема-ориентированными двоичными форматами (Thrift, Protocol Buffers, Avro)
  • Понимает требования к обратной и прямой совместимости, необходимые для поддержки плавающих обновлений в высоконагруженных системах.
  • Умеет проектировать схемы данных с учетом будущей эволюции приложения, обеспечивая корректную работу системы при одновременном использовании разных версий кода на различных узлах, а также определять подходящие стратегии изменения схем для поддержания совместимости без простоя системы.
  • Способен выбирать оптимальные форматы кодирования данных и стратегии эволюции схем для различных сценариев использования (базы данных, RPC/REST API, асинхронная передача сообщений)
  • Знает основные методы репликации данных в распределенных системах, включая репликацию с одним ведущим узлом, с несколькими ведущими узлами и без ведущего узла
  • Знает преимущества методов репликации данных в распределенных системах, ограничения и сценарии применения; осознает различия между синхронной и асинхронной репликацией, а также ключевые модели согласованности (чтение после записи, монотонное чтение, согласованное префиксное чтение) и их влияние на поведение системы.
  • Уметь проектировать стратегию репликации для конкретных сценариев использования, выбирать оптимальный метод репликации в зависимости от требований к доступности, задержкам и согласованности
  • Уметь анализировать потенциальные проблемы, возникающие при сбоях узлов и разрывах сети, включая риск потери данных при асинхронной репликации и переключении ведущего узла.
  • Знать основные методы секционирования данных, включая секционирование по диапазонам значений ключа, хеш-секционирование и гибридные подходы
  • Уметь понимать преимущества основных методов секционирования, ограничения и влияние на производительность запросов; осознавать различия между локальными и глобальными вторичными индексами и их влияние на операции записи и чтения.
  • Уметь проектировать эффективные стратегии секционирования для конкретных типов данных и паттернов доступа, выбирать подходящую схему распределения данных в зависимости от требований к производительности
  • Уметь избегать возникновения горячих точек и определять оптимальные стратегии перебалансировки при изменении нагрузки или масштабировании кластера.
  • Уметь анализировать и оптимизировать производительность секционированных систем, выявлять и устранять проблемы, связанные с неравномерным распределением нагрузки
  • Знать основные концепции транзакций как механизма абстрагирования от проблем конкурентного доступа и сбоев
  • Знать уровни изоляции (чтение зафиксированных данных, изоляция снимков состояния, сериализуемость) и типы аномалий, которые они предотвращают, включая "грязные" операции чтения и записи, асимметрию чтения, потерянные обновления, асимметрию записи и фантомные чтения.
  • Владеть практическими навыками реализации различных подходов к сериализуемым транзакциям, включая по-настоящему последовательное выполнение, двухфазную блокировку и сериализуемую изоляцию снимков состояния (SSI)
  • знать фундаментальные проблемы распределенных систем, включая явление частичных отказов, ненадежность сетевых соединений (потерю и задержку пакетов), сложности синхронизации времени между узлами, проблемы с выполнением процессов (паузы на сборку мусора)
  • уметь анализировать потенциальные точки отказа в распределенной архитектуре
  • владеть методами диагностики и обработки проблем, связанных с рассинхронизацией часов, ложным определением узлов как неработающих, "хромающими" узлами и другими сложными сценариями, которые не проявляются в системах с одним узлом
  • знать основные модели согласованности (линеаризуемость и причинная согласованность), их преимущества и ограничения
  • знать и понимать, как различные проблемы распределенных систем (атомарные транзакции, ограничение уникальности, блокировки) эквивалентны задаче консенсуса и требуют достижения неотменяемого решения всеми узлами системы.
  • уметь анализировать требования приложения к согласованности данных, выбирать подходящую модель согласованности в зависимости от конкретных сценариев использования и сетевой топологии, а также оценивать необходимость и целесообразность применения консенсусных алгоритмов для решения конкретных задач распределенной системы.
  • знать основные принципы пакетной обработки данных, включая философию Unix-инструментов, ключевые проблемы распределенных систем (секционирование и отказоустойчивость)
  • знать различные алгоритмы объединения данных (сортировка слияния, широковещательное и секционированное хеш-объединение) и их применение в MapReduce и современных системах обработки.
  • уметь выбирать подходящие стратегии секционирования и алгоритмы объединения в зависимости от характеристик входных данных и требований к производительности
  • знать основные концепции потоковой обработки, различия между брокерами сообщений типа AMQP/JMS и брокерами на основе журналирования
  • знать три типа объединений в потоковых процессах (поток-поток, поток-таблица, таблица-таблица)
  • уметь проектировать архитектуру потоковой обработки для конкретных сценариев использования, выбирать подходящий тип брокера сообщений
  • уметь определять стратегии обработки временных интервалов и разрабатывать решения для корректной обработки запаздывающих событий и восстановления после сбоев.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Надежные, масштабируемые и удобные в сопровождении приложения
  • Модели данных и языки запросов
  • Подсистемы хранения и извлечения данных
  • Кодирование и эволюция
  • Репликация
  • Секционирование
  • Транзакции
  • Проблемы распределенных систем
  • Согласованность и консенсус
  • Пакетная обработка
  • Потоковая обработка
Элементы контроля

Элементы контроля

  • неблокирующий доклад на семинаре
  • неблокирующий задание весеннего модуля
  • неблокирующий доклад по теме ВКР (первая глава)
  • неблокирующий доклад на семинаре
Промежуточная аттестация

Промежуточная аттестация

  • 2025/2026 3rd module
    1 * доклад на семинаре
  • 2025/2026 4th module
    1 * задание весеннего модуля
  • 2026/2027 1st module
    1 * доклад на семинаре
  • 2026/2027 3rd module
    1 * доклад по теме ВКР (первая глава)
Список литературы

Список литературы

Рекомендуемая основная литература

  • Высоконагруженные приложения : программирование, масштабирование, поддержка, Клеппман, М., 2019

Рекомендуемая дополнительная литература

  • Распределенные системы : принципы и парадигмы, 877 с., Таненбаум, Э., Стеен, М., 2003

Авторы

  • Башун Владимир Владимирович