Выбирать стоит по работе, которую предстоит выполнить
Список тем мало говорит о глубине курса. Обсудить Raft, реализовать его и проверить сервис поверх etcd — три разных учебных результата. Поэтому сравниваем тип практики и способ проверки, а не число упоминаний алгоритма.
Ориентиров в таблице: 8 / 8
| Курс и версия | Основной акцент | Что делает студент |
|---|---|---|
| Наш курс для ВШЭПроект программы · октябрь 2026 | Гарантии сервиса при частичных отказах | 10 лекций, 4 лабораторные: сервис задач на etcd и NATS |
| CambridgeПараллельные и распределённые системы · 2024/25 | Модели, время, порядок и согласованность | Задачи и рассуждения об алгоритмах; 8 лекций по распределённым системам |
| MIT 6.5840Spring 2026 | Системы из статей и реализация протоколов | Go: от MapReduce до собственного Raft и шардированного хранилища |
| UW CSE452Spring 2025 | Проектирование протокола и проверка инвариантов | Java / DSLabs: 4 лабораторные, документы проекта, проверка моделей |
| ШАДРазработка распределённых систем · программа без даты | Широкая теория: от ABD до TLA+ и CRDT | Открытый перечень тем; задания и оценивание не описаны в проверенном каталоге |
| ITMO-MPPРепозитории заданий · версии 2026 | Отдельные алгоритмы с явным контрактом | Kotlin / Java: собственный Raft и согласованное хеширование |
| CMU 15-440Pittsburgh · Fall 2025 | Системное программирование и большие проекты | Go; проекты, домашние работы и экзамены |
| Gossip GlomersОткрытый практикум на Maelstrom | Протокол под задержками и разделением сети | Локальные процессы, симуляция сети, проверка историй |
Фильтр показывает наш выбор наиболее подходящих ориентиров для цели, а не полное покрытие тем. Часы, зачётные единицы и число заданий здесь не переводятся в общий рейтинг: уровни подготовки и форматы слишком различаются.
Шесть ориентиров и конкретные параллели
Cambridge: язык для рассуждений о системе
2024/25 · Part IBРаспределённым системам посвящены 8 из 16 лекций общего курса. После моделей отказов и часов появляются причинность, упорядоченная рассылка, репликация, консенсус, транзакции и CRDT — структуры данных, допускающие согласованное слияние независимых изменений. Подготовка предполагает объектно-ориентированное программирование и операционные системы.
Параллель: наши модели отказов, время и причинность, согласованность и консенсус. Cambridge полезен как образец последовательного перехода от порядка сообщений к реплицируемой машине состояний.
Что взять: короткие задачи на псевдокод и объяснение контрпримеров. Отдельные блоки про рассылку и CRDT расширили бы нашу теорию. На проверенных страницах отдельная оцениваемая лабораторная по программированию не заявлена; это не означает отсутствия практических упражнений. Записи лекций именно этой версии доступны через университетские сервисы.
MIT 6.5840: построить систему из статьи
Весна 2026 · магистерский уровеньЦепочка заданий на Go проходит через MapReduce, сервер ключ–значение, собственный Raft и хранилище поверх него к распределению данных между группами реплик. Последнюю лабораторную можно заменить согласованным проектом. Чтение статей сопровождается короткими письменными ответами; код проверяется и обсуждается со студентом.
Параллель: в лекции 5 мы разбираем консенсус, в лекции 6 — разделение и миграцию данных, а в лабораторной 2 исследуем готовый Raft в etcd. MIT требует существенно больше самостоятельной реализации этих механизмов.
Что взять: отдельный углублённый путь с собственным протоколом и миграцией разделов. Полный Raft — крупная дополнительная работа. В задании MIT есть сохранение состояния и снимки, но изменение состава группы Raft не входит в объём. Страница расписания без года в URL меняется со временем; здесь зафиксировано её обозначение Spring 2026.
UW CSE452: сначала описать протокол
Весна 2025 · старшие курсыЧетыре лабораторные строятся вокруг Java и DSLabs: повторы RPC, репликация с ведущим и резервным узлом, Paxos, разделённое хранилище и транзакции. До реализации сложных заданий студенты описывают состояния узлов, сообщения, таймеры и инварианты. После — разбирают результат работы.
Параллель: наша первая лабораторная тоже начинается с повторов и идемпотентности. Лекция 7 объясняет атомарность и транзакции. Различается проверка: DSLabs исследует варианты порядка событий в модели, а наш стенд воспроизводит заданные отказы настоящих компонентов.
Что взять: одностраничное описание протокола перед кодом и разбор найденной ошибки после. Проверка моделей ограничена исследованными состояниями и не доказывает все возможные исполнения. Общий DSLabs открыт; это не означает свободного доступа ко всем материалам GitLab конкретного потока.
ШАД: широкий фундамент и инструменты проверки
Программа без указания годаОфициальный каталог перечисляет модели отказов, ABD, gossip, атомарную рассылку, Dynamo, Paxos и Raft, транзакции, обработку данных, Jepsen, TLA+ и CRDT. Рекомендуется подготовка по многопоточности. Четырнадцать пунктов программы — это темы, а не подтверждённое число занятий.
Параллель: фундамент пересекается с нашими лекциями о репликации и консенсусе, проверка отказов — с лекцией 9. В опубликованном перечне ШАД заметнее формальные методы и распределённая обработка данных.
Что взять: упражнения на модели протоколов и слияние независимых изменений. По этой странице нельзя установить язык заданий, их сложность, правила оценивания или обязательный список статей.
ITMO-MPP: алгоритм с проверяемым контрактом
Закреплённые версии заданий · 2026Открытые задания на Kotlin/Java предлагают реализовать Raft и согласованное хеширование. В Raft студент пишет выборы лидера и репликацию журнала, опираясь на предоставленные хранилище и машину состояний. Базовое задание не включает сжатие журнала. В хешировании проверяются поиск владельца ключа и диапазоны, передаваемые при добавлении и удалении узлов.
Параллель: наша лекция 5 объясняет протокол, лекция 6 — размещение и перемещение данных. Небольшая реализация хеширования могла бы связать схему из лекции с исполняемым кодом.
Граница: это сравнение открытых заданий по закреплённым версиям репозиториев. Из них нельзя восстановить полный учебный план ИТМО, нагрузку семестра или формальные требования к поступающим.
CMU 15-440: системная инженерная подготовка
Pittsburgh · Fall 2025Курс сочетает распределённые системы с большими проектами на Go. Ожидается подготовка по системному программированию уровня 15-213/15-513. В оценивание входят проекты, домашние работы и экзамены; программа подчёркивает взаимодействие процессов, ненадёжную связь, отладку и работу при отказах.
Параллель: наши RPC и повторы, эксплуатация, эксперименты под нагрузкой и защита архитектуры. Полезен сам баланс программирования и объяснения решений.
Граница: сравниваем поток Pittsburgh. Детали проектов Fall 2025 не восстановлены из открытых страниц, а в syllabus остались фрагменты прежних лет. Поэтому не приписываем этому потоку задания из архивов или программы кампуса Qatar.
Gossip Glomers: небольшой протокол под управляемыми отказами
Практикум Fly.io на Maelstrom предлагает шесть групп задач: эхо, уникальные идентификаторы, рассылку, счётчик, журнал в стиле Kafka и транзакции. Это самостоятельный набор упражнений, а не университетский семестр. Примеры написаны на Go; протокол ввода-вывода позволяет использовать другие языки.
Узлы работают как локальные процессы, обменивающиеся JSON через стандартные потоки. Сеть симулируется: можно задавать задержки и разделения, записывать историю и проверять её свойства. У нас лабораторная 3 и лабораторная 4 исследуют настоящие etcd и NATS. Эти способы проверки дополняют друг друга: первый помогает искать ошибки протокола, второй — видеть поведение интеграции.
Для короткого дополнительного задания подойдёт отказоустойчивая рассылка: сначала добиться доставки после восстановления связи, затем измерить число сообщений. Проверяющий истории не становится исчерпывающим доказательством корректности, а задача на счётчик сама по себе не означает обязательной реализации CRDT.
Наш профиль: гарантии на границах компонентов
В нашей программе 10 лекций и 4 лабораторные соединены одним сервисом задач. API принимает запрос, etcd хранит состояние, NATS передаёт работу обработчику. Студент дописывает две ключевые операции — создание и завершение задачи; API, доставка и запуск экспериментов предоставлены в заготовке.
- Неизвестный результат запроса. В лабораторной 1 ответ теряется после успешной записи. Нужно повторить запрос и сохранить единственный логический результат.
- Смена лидера и разделение сети. Лабораторная 2 показывает поведение трёх настоящих узлов etcd. Студент исследует готовый консенсус и объясняет его границы.
- Запись, доставка и эффект. В лабораторной 3 задача и запись для последующей отправки сохраняются атомарно. После повторной доставки обработчик не должен второй раз изменить локальный счётчик; подтверждение сообщения следует за фиксацией результата.
Что проверено и что остаётся за пределами. Стенд содержит 12 заданных сценариев отказа, а не общий проверяющий линейризуемость. Все процессы работают на одном физическом узле; брокер один, его диск сохраняется. Уникальность эффекта относится к счётчику в etcd при сохранённых записях защиты от повторов, а не к внешнему платежу. Собственный Raft, реальная миграция между шардами и потеря диска брокера в базовую практику не входят.
Это делает курс прикладным: главная работа — сформулировать гарантию всей операции и проверить, где она нарушается. У MIT и UW глубже самостоятельная реализация алгоритмов; наш сквозной пример выделяет границы между HTTP, хранилищем и очередью.
Как развивать программу после сравнения
Ниже — авторские предложения для следующей редакции. Эти задания ещё не добавлены в текущие лабораторные.
- Описание протокола до кода. По примеру UW: состояния, сообщения, таймеры, инвариант и граница атомарной операции. После эксперимента — короткий разбор причины сбоя. Это можно применить ко всем четырём лабораторным без смены проекта.
- Рассылка и слияние изменений. Добавить к лекциям 2, 4 и 8 связку «порядок сообщений → репликация», а затем небольшое упражнение на CRDT. Cambridge и ШАД дают ориентиры для теории, Gossip Glomers — для практики рассылки.
- Проверка историй и поиск контрпримеров. Дополнить заданные отказы случайными последовательностями событий и проверкой истории операций. Для маленького протокола отдельно исследовать ограниченную модель, как в DSLabs. Реальные интеграционные эксперименты сохранить.
- Углублённая практика по выбору. Начать с согласованного хеширования или репликации с ведущим и резервным узлом. Миграцию разделов и полный Raft вынести в отдельный большой блок с дополнительной нагрузкой, ориентируясь на MIT и ITMO-MPP.
Статьи связывают программы между собой
В чтении MIT встречаются MapReduce, GFS, Paxos, Raft, Linearizability и Spanner; у UW — Lamport, Paxos, Bigtable, MapReduce и Dynamo. У нас эти работы связаны с лекциями и самостоятельными деками Research Insights Made Simple. Например, чтение к лекции 2 ведёт к времени и причинности, к лекции 5 — к консенсусу, к лекции 7 — к транзакциям.
Полезное дополнение по примеру MIT — один короткий ответ до обсуждения: «На какое допущение опирается система и что сломается, если его убрать?» Дека помогает объяснить статью; ответ и эксперимент показывают, понял ли студент её границы.