Построение отказоустойчивых вычислительных систем распределенной обработки информации и алгоритмы реконфигурации, страница 8

Эти действия подобны стандартным действиям запрос – ответ, но они надежны в том смысле, что они завершаются, они обеспечивают только одну семантику даже в случае отказа любого одного экземпляра. Точно один режим гарантирует  одно выполнение запроса в принимающем модуле. Таким образом, систему коммуникационных модулей, выполняющих действия типа вопрос – ответ можно сделать отказоустойчивой.  На рис.1.8 показан общий принцип действий при соединении источник – адресат.

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

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

2)   Отказ адресата и последующее восстановление может привести к обработке запроса. Если ответ уже был послан к источнику, то может сгенерироваться дубликат ответа и он должен фильтроваться на источнике. При этом требуется повторная фильтрация и ретрансляция ответа.   


   

Рис. 1.7


Рис 1.8


Рис 1.9

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

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

Правила хранения.

Технология восстановления основывается на повторяемости входов выполняемого модуля, когда он настроен на восстановление. Принимаемое сообщение меняет состояние модуля. Следовательно, необходимо обеспечить, чтобы сообщение, обработанное активным экземпляром, также было обработано связанным с ним пассивным экземпляром при восстановлении. В противном случае получаются разные результаты. Этого можно достичь, если выполнить процедуру хранения, когда появляется сообщение запрос – ответ, т.е. передать сообщение в память.(Рис 1.9).


Рис 1.5


Рис 1.6

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