2026 г.

Распределённые системы

Проект ЦИТадель

Практически любая современная информационная система распределена — а значит, наследует весь букет проблем, которых не существует в одиночном компьютере: ненадёжную сеть, отсутствие общего времени, частичные отказы, необходимость выбора между согласованностью и доступностью. Материалы этого раздела излагают предмет систематически — от фундаментальных теорем до аварийного переключения своими руками. Особенность предмета, делающая его благодарным для изучения: фундамент (работы Лэмпорта, теорема FLP, кворумные протоколы) не устаревает десятилетиями — выученное однажды продолжает работать в системах, которых ещё не существует.

Статьи

  • Распределённые системы: обзор — карта предмета за одно чтение: почему это трудно (сеть, время, частичные отказы), CAP и спектр согласованности, репликация, консенсус и Raft, шардирование, распределённые транзакции, журналы событий — и честный раздел о том, когда распределяться не следует. Рекомендуемая точка входа в раздел.
  • Надёжность поверх ненадёжной сети: практическое руководство — поваренная книга приёмов в формате «проблема → решение → настройка → типичная ошибка»: тайм-ауты и повторы, идемпотентность, предохранители и деградация на серверной стороне; offline-first, разрешение конфликтов и честный интерфейс на клиентской. С практикумом: как испортить себе сеть командой tc netem и проверить всё написанное.

Курс

Распределённые системы: курс — систематический семестровый курс: 12 глав в четырёх частях, каждая глава — лекция с упражнениями и ответами; пять лабораторных работ на реальных системах (PostgreSQL, etcd, Kafka, tc netem), выполняемых в Docker на одной машине.

  • Часть I. Основания — модель системы и виды отказов; логическое время и согласованные снимки; теоремы невозможности (два генерала, FLP, CAP).
  • Часть II. Согласованность и консенсус — модели согласованности от линеаризуемости до итоговой; репликация и её аварии (лабораторная: потеря транзакций PostgreSQL); Raft в полном объёме (лабораторная: кластер etcd против разделений сети); византийские отказы.
  • Часть III. Масштаб — шардирование и согласованное хеширование (лабораторная: собственная реализация с измерениями); распределённые транзакции от 2PC до Spanner и саг; журналы событий и Kafka (лабораторная: потери и дубликаты своими руками).
  • Часть IV. Инженерия — тестирование распределённых систем и подход Jepsen (итоговая лабораторная: аудит гарантий); семинар по проектированию с разборами и кейсами.
404 Not Found

404 Not Found


nginx/1.24.0 (Ubuntu)

Связь с редакцией