![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
состояние сайта:= “инициализация”
Endi
Event
if message.code = “включить данные в БД” then
Begin
start; write(“начало транзакции”);
L:= Æ;
out “приготовиться к изменениям”;
состояние сайта:= “ожидание”;
schedule (TimeOut, T)
End
else if message.code = “готов” then
Begin
Include(L, message.id);
if L = S then
Begin
L:= Æ; out “общее обновление”;
состояние сайта:= “обновление”
End
End
else if message.code = “выполнено” then
Begin
Include(L, message.id);
if L = S then
Begin
write(“транзакция завершена”);
состояние сайта:= “завершено”
End
End
else if message.code = “не готов” then
Begin
write(“не готов менеджер копии”);
out “общий возврат”;
End
else if message.code = “не выполнено” then
Begin
write(“не выполнил менеджер копии”);
out “общий возврат”;
End
else if message.code = “отказ принят” then
Begin
Include(L, message.id);
if L = S then
Begin
write(“отказы подтверждены”);
состояние сайта:= “завершено”
End
End
Endc
ende;
event TimeOut;
write(“время истекло”);
состояние сайта:= “завершено”;
out “общий возврат”;
ende.
Менеджер сайта – владельца исходной базы данных получает сообщение “включить данные в БД” при необходимости корректировки копий. Менеджер заносит соответствующую запись “начало транзакции” в свой журнал, готовит структуру данных (L:= Æ) для занесения в нее в будущем информации о готовности периферийных сайтов и рассылает всем сообщение “приготовиться к изменениям”. Кроме этого, менеджер устанавливает предельное время (T) для проведения всего процесса.
Менеджеры mj сайтов начинают присылать сообщения о своей готовности. Идентификаторы этих сайтов заносятся в множество L. Если все сайты готовы, то при приходе последнего сообщения выполнится условие L = S, т.е. множество сайтов, сообщивших о своей готовности, совпадает с множеством всех сайтов.
После этого менеджер M отправляет всем mj сообщение “общее обновление”. Далее идет процесс, похожий на предыдущий. Только теперь менеджеры mj проводят обновления и сообщают об этом словом “выполнено”. Если все выполнят обновления, то транзакция завершается.
Если какой-либо из сайтов не готов или не выполнил обновление, то менеджер M дает команду “общий возврат”, отменяющую транзакцию. После отмены он ожидает подтверждений о принятии отмены от менеджеров копий базы данных.
Рутины менеджеров копий:
routine m
Дата публикования: 2014-11-18; Прочитано: 268 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!