Files
hse-2026/materials/04-group-comm/seminar/readme.md
T
2026-10-01 22:08:30 +03:00

7.6 KiB
Raw Blame History

Семинар 4. Групповые взаимодействия

На семинаре закрепим материал лекции через демонстрацию IP multicast, разбор историй отказов, работу с причинным буфером и эксперименты с gossip. Будем различать получение сетевого сообщения и его доставку приложению, проверять гарантии рассылки и сравнивать стоимость распространения информации.

Подготовка и участие

Для самостоятельных экспериментов заранее выполните инструкции по подготовке gossip и проверьте запуск distsys-gossip -h. Если окружение не готово, можно участвовать в разборе демонстрации и подготовленных журналов: предсказывать результат, находить нужные показатели и объяснять наблюдения.

1. IP multicast: доставка сетевых сообщений

Проследим путь сообщения от отправителя к нескольким получателям в примере с контейнерами. Найдём в коде адрес группы, присоединение получателя и отправку датаграммы.

Затем отключим одного получателя, отправим сообщение и вернём его в группу. Перед запуском предположим, кто увидит каждое сообщение, а после сравним прогноз с журналом.

Обсудим, восстанавливаются ли пропущенные сообщения и какие механизмы понадобились бы для этого. Свяжем наблюдение с различием между сетевым получением и доставкой приложению.

2. Надёжная рассылка: обязательства при отказах

Разберём свойства Validity, No Duplication, No Creation, Agreement и Uniform Agreement на историях с остановкой процессов. В каждой истории сначала определим, какие процессы корректны, затем проверим обязательства по доставке.

Основные вопросы:

  • Что меняется, если отправитель падает посреди рассылки?
  • Обязаны ли остальные корректные процессы доставить сообщение, если получатель уже доставил его, а затем упал?
  • Почему перед вызовом deliver может потребоваться дождаться, пока сообщение сохранится у других процессов?

Сравним BEB, RB и URB и обсудим роль корректного большинства.

3. Порядок доставки: зависимости и буфер

На примерах последовательных сообщений и ответа в чате различим FIFO и Causal Order. Построим зависимости между сообщениями, полученными в перемешанном порядке, и пошагово разберём буфер доставки.

Для каждого сообщения определим, выполнены ли его зависимости и как доставка изменяет состояние получателя. Проверим, почему после одной доставки нужно снова просмотреть буфер и когда допустимы разные последовательности доставок.

В завершение обсудим пример независимых операций, для которых причинного порядка недостаточно, чтобы реплики получили одинаковый результат, и роль Total Order.

4. Gossip: скорость, трафик и остановка

В лабораторной работе сравним push, pull и push-pull с одинаковыми параметрами. Перед каждым экспериментом сформулируем прогноз, затем сопоставим его с результатом.

  • Измерим время полного охвата и число сетевых сообщений.
  • Изменим fanout и вероятность потерь, сохраняя остальные параметры.
  • Сравним полный охват с прекращением периодических обменов.
  • Разберём, почему -q останавливает симулятор, а STOPPED у процесса не означает его отказ.

Объясним наблюдения через действия узлов и ограничения модели. Результат одного запуска используем как конкретный пример; для проверки общего вывода повторим эксперимент с другими seed.

Дополнительные материалы

IP multicast

Надёжность и порядок

Gossip и его применения