Я новичок в Hazelcast. Итак, у вас есть вопрос о лучших методах обработки сбоев во время параллельной обработки:
Освоение Hazelcast, раздел 6.6, стр. 96:
Work-queue не имеет высокой доступности: каждый участник создаст один или несколько локальных ThreadPoolExecutors с обычными рабочими очередями, которые выполняют реальную работу. Когда задача отправлена, она будет помещена в рабочую очередь этого ThreadPoolExecutor и не будет поддерживаться Hazelcast. Если что-то случится с этим участником, вся необработанная работа будет потеряна.
Задача:
Предположим, у меня есть 1 главный узел и 2 подчиненных. Запускаю трудоемкую задачу с
executor.submitToAllMembers (new TimeConsumingTask())
Итак, каждый узел что-то обрабатывает. И пока они все что-то обрабатывают, один из рабов выходит из строя
Вопросы:
- Невозможно повторно запустить работу с отказавшим элементом на другом узле, верно?
- Есть ли другой (желательно лучший) подход, чем повторный запуск всего набора заданий для всего кластера? (В случае, если
TimeConsumingTask
равноRunnable
) - Есть ли другой (желательно лучший) подход, чем повторный запуск всего набора заданий для всего кластера? (В случае, если
TimeConsumingTask
равноCallable
и я хочу получитьFuture
в качестве результата вычисления кластера)