Распределенное синхронизированное выполнение - PullRequest
1 голос
/ 22 июня 2011

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

Я также слышал о zookeeper, jgroups и akka, но при чтении документации мне показалось немного излишнимчто я пытаюсь сделатьУ кого-нибудь есть идеи, есть ли что-нибудь более простое в использовании?

Заранее спасибо,

Руи

Ответы [ 3 ]

3 голосов
/ 23 июня 2011

Я думаю, что распределенная блокировка Hazelcast (http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#lock) может быть полезной. Hazelcast относительно легкий, поэтому, надеюсь, не стоит переборщить.

3 голосов
/ 22 июня 2011

Если все упомянутые вами технологии (также посмотрите на Terracotta ) слишком сложны для ваших нужд, может быть, простая блокировка базы данных?

SELECT FOR UPDATE оператор заблокирует данную запись базы данных, заставляя другие клиенты, выполняющие этот запрос, блокироваться. Простой, но безопасный и надежный.

2 голосов
/ 22 июня 2011

Очень базовым решением было бы использование RMI .

. Решите использовать одну машину в качестве мастера, у которой есть метод, который использует блокировку mutex , чтобы разрешить толькопередача одного вызова mthod.

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

...