
7.4. Надежная групповая рассылка 433
Упорядочение сообщений
Виртуальная синхронность позволяет разработчику приложений считать, что
групповые рассылки происходят в различные эпохи, отделенные друг от друга
изменениями в составе группы. Однако мы ничего не говорили о порядке следо-
вания групповых рассылок. В общем можно выделить четыре варианта группо-
вых рассылок с разным порядком следования:
> неупорядоченные групповые рассылки;
"¥ групповые рассылки в порядке FIFO;
> причинно упорядоченные групповые рассылки;
4-
полностью упорядоченные групповые рассылки.
Надежная неупорядоченная групповая рассылка {reliable unordered multicast) —
это виртуально синхронная групповая рассылка, не дающая никакР1х гарантий
порядка прихода сообщений к различным процессам. Чтобы понять это определе-
ние,
рассмотрим надежную групповую рассылку, реализованную при помощи биб-
лиотеки, в которой имеются примитивы отправки и получения (табл. 7.2). Опе-
рация отправки блокирует вызвавший ее процесс до передачи ему сообщения.
Таблица
7.2.Три
Процесс Р1
Отправка m1
Отправка т2
взаимодействующих в группе процесса
Процесс Р2
Получение m1
Получение т2
Процесс РЗ
Получение т2
Получение m1
Как показано в таблице, пусть процесс Р1 рассылает группе два сообщения,
а
два других процесса, входящие в группу, ожидают прихода этих сообщений.
Будем считать, что ни один из процессов в ходе этой рассылки не ломается и не
покидает группу. Может случиться, что коммуникационный уровень процесса Р2
сначала примет сообщение тУ, а затем
т2.
Поскольку на порядок доставки сооб-
щений не наложено никаких ограничений, сообщения могут быть доставлены Р2
в порядке их приема. С другой стороны, коммуникационный уровень РЗ может
сначала принять сообщение т2, а затем m1
w
доставить их РЗ в том же порядке.
В случае
надежной групповой
рассылки в порядке
FIFO {reliable FIFO-ordered
multicast) коммуникационный уровень обязан доставлять входящие сообщения
каждому из процессов в том же порядке, в котором они были отправлены. Рас-
смотрим взаимодействие в группе из четырех процессов, которую иллюстрирует
табл. 7.3. При упорядоченности FIFO имеет значение только то, что m1 всегда
доставляется перед т2, а тЗ, соответственно, перед т4. Это правило соблюдает-
ся всеми процессами группы. Другими словами, если коммуникационный уро-
вень Р2 примет сначала сообщение т2, он будет ожидать получения m1, чтобы
принять и доставить его первым.
Однако какие-либо ограничения на доставку сообщений, посланных разными
отправителями, отсутствуют. Другими словами, если процесс Р2 принимает m1
перед тЗ, эти сообщения могут быть доставлены ему именно в таком порядке.
В
то же время процесс РЗ может принять тЗ перед приемом m1. Упорядочен-
ность FIFO предполагает, что тЗ может быть доставлено РЗ раньше, чем m1, не-
смотря на то, что этот порядок доставки отличается от порядка доставки для Р2.