Возможно ли иметь реплицированные JVM, чтобы я мог просто переключаться с первичного jvm на вторичный в случае, если первичный jvm выходит из строя - PullRequest
4 голосов
/ 27 декабря 2011

Можно ли реплицировать полную JVM, а в случае сбоя просто переключить нагрузку на реплицированную JVM?

Если да, то как мы можем это сделать?

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Если ваше приложение является веб-приложением, ознакомьтесь с разделами «Кластеризация» и «Балансировка нагрузки».Большинство серверов приложений поддерживают кластеризацию.

Вы также можете взглянуть на JGroups, которая обеспечивает связь между JVM.

1 голос
/ 27 декабря 2011

Да, в теории, но главная проблема заключается в том, что ваши приложения будут работать намного, намного медленнее (например, от 100 до 1000x), и это то, что мешает большинству людей делать полную репликацию.создайте поток данных важных частей информации, например, всех входных или выходных сообщений (или обоих), и отправьте их на второй компьютер и восстановите состояние из существующих данных.

КСТАТИ: Когда вы потеряетеTCP-соединение с сервером, они должны быть закрыты и подключены заново.Они не провалились прозрачно.UDP избегает этой проблемы, не имея соединений, но с ним гораздо сложнее работать надежно.Одним из способов решения этой проблемы является наличие простого прокси-сервера / сервера балансировки нагрузки, который находится между клиентом и сервером.Поскольку это просто, менее вероятно, что потерпит неудачу, и это скрывает переподключение с сервером.Однако если у вас возникнет ошибка центра обработки данных, она также исчезнет.

1 голос
/ 27 декабря 2011

Это не то, что делается на уровне JVM, но есть много продуктов, которые обрабатывают это при обработке сообщений. Обычно это особенность Enterprise Service Bus. Google, и вы получите некоторые идеи.

...