2. Консервативные методы
Не допускают нарушений локальной
каузальности
Плохо поддаются параллелизации
Требуют дополнительной информации
для определения безопасного события
процесса (lookahead)
3. Оптимистические методы:
важные свойства
Выявляют нарушения каузальности и
устраняют их
Можно параллелить
Не требуют дополнительной
информации
Прозрачнее для разработки
математического ПО
Могут потребовать больше вычислений
Сложнее реализовать, чем
консервативные
4. Оптимистические методы:
характерные особенности
Сообщения с временными метками
Топология может меняться
Сообщения по линии связи
передаются неупорядоченные по
времени
Линии связи достаточно надежны
5. Time Warp
Если новое сообщение имеет меньшую
метку времени, чем уже обработанные
– производится откат:
◦ Состояние процесса восстанавливается
через контрольную точку
◦ Процесс отказывается от ошибочно
обработанных сообщений через
антисообщения
6. Антисообщение
Копия обычного сообщения
Уничтожает такое же позитивное
сообщение в очереди процесса
Если соответствующие позитивное
сообщение уже обработано – откат
состояния
Может повлечь появление новых
антисообщений (рекурсия)
7. Time Warp: проблемы
Некоторые действия необратимы –
например, ввод-вывод
Нужно много памяти для хранения
контрольных точек
◦ В идеале, делаются после каждого
полученного сообщения
◦ Некоторые процессы могут «забегать»
слишком далеко
8. GlobalVirtual Time
Нижняя граница временной отметки
любого будущего отката
Вычисляется с учетом откатов,
выполненных в прошлом
Является наименьшей временной
меткой среди частично обработанных
и необработанных сообщений
Является нижней границей временной
метки для поступающих сообщений
9. Как GVT может устранить
«забегающие» вперед процессы
Временное окно, огранивающее
обработку событий – 𝐺𝑉𝑇, 𝐺𝑉𝑇 + 𝑊 ,
где 𝑊 может быть:
◦ Задано пользователем
◦ Подобрано адаптивным алгоритмом
Не обрабатывать сообщение, пока не
будет гарантии, что оно не вызовет
отката назад
◦ Исключает необходимость антисообщений
10. Решение проблем с памятью
Выполнять откат с целью
освобождения памяти,
использующейся для хранения
состояний
Сохранять состояние реже, чем после
каждого события
◦ Интервал сохранений указывается
пользователем или подбирается
адаптивным алгоритмом