
768 Глава 12. Распределенные системы согласования
этих сообщений. Регистрация позволяет транспорту обеспечить дополнительные
механизмы надежности, которых не имеют демоны контактов. Большая часть этих
механизмов скрыта от приложений и обеспечивается средствами транспорта.
Если журнал регистрации реализован в виде файла, становится возможным
обеспечивать надежную доставку сообщений даже при отказах процессов. Так,
например, при отказе принимающего процесса все сообп1ения, которые он про-
пустит до момента восстановления, будут сохранены в журнале регистрации
отправителя. После восстановления получатель просто связывается с журналом
регистрации и требует повторной передачи потерянных сообщений.
Отказоустойчивые группы процессов
Чтобы иметь возможность маскировать отказы процессов, TIB/Rendezvous ис-
пользует простое средство автоматической активизации или деактивации про-
цессов. В данном контексте процесс считается активным, если он обычным обра-
зом отвечает на все приходящие сообщения, и неактивным в противном случае.
Коротко говоря, неактивный процесс
—
это работающий процесс, который может
обрабатывать только некоторые события.
Процессы могут быть собраны в группу, в которой каждый процесс имеет со-
ответствующий ему уникальный ранг. Ранг процесса в группе определяется ве-
сом, назначенным ему вручную, причем два процесса в одной группе не могут
иметь одинаковый ранг. Каждой группе TIB/Rendezvous разрешено иметь не-
сколько (в зависимости от группы) активных процессов, которые называются
активной целью {active goal) группы. Во многих случаях активная цель ограни-
чивается единственным процессом, а все взаимодействие в группе обеспечивает-
ся протоколом на базе первичной копии, о котором мы говорили в главе 6.
Активный процесс регулярно посылает сообщение прочим членам группы,
чтобы объявить, что он жив и работает. Если очередное сообщение от процесса
не пришло, промежуточный уровень TIB/Rendezvous автоматически активизР!-
рует процесс, имеющий самый высокий ранг из тех, которые были неактивны.
Активизация сопровождается оповещением о действиях, которые должен реали-
зовать каждый из членов группы. Точно так же, если ранее не функционировав-
ший процесс восстанавливается после сбоя и становится активным, активный
процесс с минимальным рангом автоматически деактивируется.
Чтобы сохранить непротиворечивость активных процессов, необходимо осо-
бым образом «пробуждать» неактивные процессы перед их активизацией. Про-
стой выход из положения состоит в том, чтобы подписать неактивный процесс
на все те сообщения, которые получают прочие члены группы. Он будет обраба-
тывать входящие сообщения обычным образом, но без публикации ответов.
Отметим, что эта схема близка к активной репликации, о которой мы говорили
в главе 6.
12.2.8.
Защита
Защита в TJB/Rendezvous сведена к организации защищенных каналов между
издателем и подписчиком. В результате такого подхода утрачивается одна из