
754 Глава 12. Распределенные системы согласования
ривали в главе 2. При этом необходимо явно указать адрес почтового ящика,
в котором должны храниться сообщения. Это, собственно, и есть ссылочная
связность.
Комбинация связности по времени и несвязности по ссылкам образует груп-
пу моделей
согласования
па
встрече {meeting-oriented
coordination).
В несвязной
по ссылкам системе процессы не имеют полной информации друг о друге. Дру-
гими словами, когда процесс хочет согласовать свою деятельность с другими про-
цессами, он не может обратиться к ним напрямую. Взамен используется метафора
встречи, на которой собираются процессы, чтобы скоординировать свою дея-
тельность. Модель предполагает, что процессы, участвующие во встрече, выпол-
няются одновременно.
Системы согласования на встрече часто реализуются на базе событий, схожих
с теми, которые используются в распределенных системах объектов. В этой главе
мы рассмотрим другой механизм реализации встреч, реализуемый так называе-
мыми
системами
публикации/подписки
{publish/subscribe
systems). В этих систе-
мах одни процессы могут подписываться на сообщения, содержащие информа-
цию по определенной теме, а другие процессы
—
публиковать (то есть создавать)
такие сообщения. Большинство систем публикации/подписки требуют, чтобы
взаимодействующие процессы были активны одновременно, следовательно, они
связаны по времени. Однако взаимодействующие таким образом процессы могут
оставаться неизвестными друг другу.
Наиболее широко известный вариант согласования
—
это сочетание несвяз-
ных по времени и по ссылкам процессов, представленный
генеративной
связью
{generative communication), которая впервые была реализована в программной
системе Linda
[163].
Основная идея генеративной связи состоит в том, что набор
независимых процессов может использовать разделяемое сохранное пространст-
во данных, организуемое с помощью кортежей. Кортежи
—
это именованные за-
писи, содержащие несколько (но, возможно, и ни одного) типизованных полей.
Процесс может помещать в разделяемое пространство данных записи любого ти-
па (то есть генерировать связующие записи). В отличие от электронных досок
объявлений, в этом случае нет необходимости точно задавать структуру корте-
жей. Для разделения кортежей в соответствии с информацией, которая в них со-
держится, достаточно их имен.
Интересная особенность этих разделяемых пространств имен состоит в том,
что они реализуют механизмы ассоциативного поиска кортежей. Другими слова-
ми,
когда процесс хочет извлечь кортеж из пространства данных, ему достаточно
определить значения полей, которые его интересуют. Любой кортеж, удовлетво-
ряющий описанию, будет извлечен из пространства данных и передан процессу.
Если ничего найдено не будет, процесс может заблокироваться до прихода оче-
редного кортежа. Мы отложим детальное описание этой модели согласования до
обсуждения системы Jini. В [106] представлен обзор моделей генеративной свя-
зи в контексте приложений для Интернета.
Большинство исследований по вопросам согласования в основном посвящено
программным моделям и соответствующим языкам
[341].
Более поздние иссле-