Служба таймеров JBoss EJB2 - несколько серверов, одна таблица ТАЙМЕРОВ? - PullRequest
3 голосов
/ 01 июля 2010

Я не могу найти это нигде в документации JBoss, поэтому спрашиваю здесь.

Может ли несколько экземпляров JBoss, не -кластеризованных, иметь доступ к одной и той же таблице TIMERS (используемой службой таймеров EJB2) и совместно использовать ее, не расстраивая друг друга, или каждому нужна своя собственная таблица? В случае кластера, важно ли, чтобы все узлы в кластере имели доступ к таблице TIMERS или они обменивались информацией напрямую по сети?

Заранее спасибо за разъяснения!

Rich

1 Ответ

1 голос
/ 07 июля 2013

Это старый вопрос, но, возможно, он все еще может быть кому-то полезен, поэтому я постараюсь ответить на него.

Предполагая, что одна и та же таблица таймеров может быть разделена между различными серверами, которые не выполняются в кластере (на самом деле я думаю, что это возможно), появится несколько проблем, связанных с реализацией TimerService, например: предположим, что на каждом сервере развернута одни и те же таймеры, будет ли каждый экземпляр таймера связан с разными записями в этой таблице? Если это так, бизнес-логика будет выполняться более одного раза, когда истекает таймер. В случае, если процесс развертывания генерирует запись только для каждого таймера, правильно ли выполняется TimerService, когда разные TimerServices пытаются одновременно получить доступ / изменить одну и ту же информацию?

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

Решение для обеспечения высокой доступности уже реализовано и называется HATimerService.

В кластере есть только одна таблица, но отличие состоит в том, что существует уникальный актив TimerService в течение времени, когда узел, который выполняет TimerService, выходит из строя, другой узел становится ведущим, поэтому не существует таймера обмена информацией между узлами. благодаря информации имеется в базе данных

...