Механизм, используемый нами для масштабирования, также обеспечивает высокую степень отказоустойчивости в системе. Учитывая машинно-независимую природу данных, используемых задачами и коммуникационными механизмами, становится ясно, что задачу можно перемещать с одного компьютера на другой. Но если на компьютере произойдет сбой, как восстановить задачи, которые на нем выполнялись? Ответ: сами задачи представляют собой долгосрочные объекты, сохраняемые службой данных для всей системы. Таким образом, если на компьютере происходит сбой, то все выполнявшиеся на нем задачи рассматриваются как отмененные транзакции и перебрасываются на другие компьютеры. Хотя задержка от такой перепланировки может превышать задержку от перепланировки отмененной транзакции на том же компьютере, система все равно будет работать правильно. В худшем случае пользователь системы (игрок или обитатель виртуального мира) заметит небольшую задержку в реакции системы. Задержки могут раздражать, но в гораздо меньшей степени, чем традиционные последствия сбоя сервера в игре или виртуальном мире, когда игроку как минимум приходится подключаться заново, да еще и с возможностью потери существенного игрового состояния.
Related posts: