Re[2]: Восстаноление после сбоя.
От: cudu  
Дата: 20.12.11 12:23
Оценка:
Здравствуйте, tavr, Вы писали:

T>Здравствуйте, cudu, Вы писали:


C>>Допустим, есть некая последовательность выполнения методов

C>>Object Class.method1();
C>>Object Class.method2();
C>>Object Class.method3();
C>>Object Class.method4();

C>>Каждый из методов может возвращать набор достаточно "сырых" данных(файлы, collection) достаточно приличным объемом.

C>>Есть задача, если по каким либо причинам при выполнении одного из методов программа "упала", после запуска программы была возможность начать работу с упавшего метода.

C>>Кто нить красиво это решал в standalone приложениях без всяких haxa транзакций?

C>>самое просто решение это вести лог выполения и кэшировать на hdd полученные данные.

C>>После сбоя искать лог не завершенный и пытаться поднять кэш.

C>>Очевидные проблемы с невозможностью порой сериализовать "чужие" сущности и тд...вообщем давайте обсудим)

T>для этого вам придется сохранять в постоянное хранилище (файловая система, DB, ...) весь тот большой объем данных после вызова каждого метода.

T>Будет ли это оправдано в плане производительности? При небольшой вероятности сбоев может оказаться быстрее пересчитать заново несколько методов.

данные приходят от стороннего сервиса и на 1 get система может потратить час времени.
При условии, что мы не хотим разбираться: это сетевые проблемы, либо стороннего сервиса, требуется таки данные пока что кэшировать и после сбоя поднимать.

Самый простой метод использовать ehCache с кэширование на диск с валидным временем кэша , допустим 2 часа.
Но вдруг кто то красивеее решал? Проблема еще в том, что требуются сериализованные данные. Что иногда — довольно затратно по времени(я имею ввиду кодирование из за получения чужих сущностей несериализуемых)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.