2013-05-21 1 views
1

У меня задача обработки очереди с низким процессором, которую мне нужно продолжать в течение потенциально длительного периода времени. В случае сбоя задачи я хотел бы, чтобы задача выполнялась в кластерной среде с высокой степенью готовности, и задача должна «переключиться» на другую машину, если первая машина выходит из строя. Каков наилучший способ убедиться, что у меня есть задача, работающая только на одном компьютере в кластере за раз, с бесперебойным откатом при отказе машины?Сохранение длительной задачи, выполняемой на одной машине кластера с откатом?

Прямо сейчас, я планирую использовать JGroups для реализации этой функции. Я буду поддерживать один канал для каждой задачи, и только руководитель канала выполнит задачу, а остальные участники «последуют». Затем, если лидер канала когда-либо изменится, новый лидер канала поднимется, где последний остановился.

Кто-нибудь использовал JGroups для решения этой проблемы? Каков был ваш опыт?

+1

Я не могу прокомментировать опыт работы с JGroup, но, безусловно, он способен это сделать. Для нашего (в моей работе) требования мы написали простую кластерную структуру UDP. Рамочные выборы хозяев и выбрать лидера, если лидер умрет, тогда один из членов начнет выборы. – Peeyush

+0

Спасибо за комментарий! Это отличная информация. – sigpwned

ответ

1

Вы можете получить вдохновение и направление от JBoss 4.2.3+ Clustered Singleton. Определите службу, которая работает на одном, и только один узел в кластере узлов. Если этот узел выходит из строя или выбрасывается из кластера, новому узлу назначается синглтон. Основная реализация [JBoss Clustering] - это JGroups.

+0

Это выглядит отлично. Я посмотрю и приму этот ответ, если это сработает. – sigpwned

Смежные вопросы