Подтвердить что ты не робот

Альтернативы JGroups

Я хочу создать распределенные приложения на JVM, которые имеют несколько узлов, и нуждаются в библиотеке, которая позволяет мне:

  • Управление членством в кластере/сетке, т.е. я хочу получать уведомления о выходе/присоединении
  • Управление сообщениями между членами кластера

Я нашел два решения:

  • JGroups - он работает, но он выглядит датами и не широко используется
  • Akka - на нем Scala и его кластерный модуль не выглядит зрелым.

Существуют ли другие библиотеки, которые могут сделать то же самое?

4b9b3361

Ответ 1

JGroups существует с 1998 года и поэтому очень стабильна, а не датирована вообще! Он активно развивается (я ведущий разработчик).

Он используется множеством приложений/систем, если вы используете для этого Google, вы найдете много ссылок. Только на этой неделе телекоммуникационная компания, использующая его, побила рекорд для самого большого кластера, построенного с помощью JGroups с кластером 1115 node!

Кластеризация JBoss (Wildfly) (Infinispan) также использует JGroups. Я предлагаю написать небольшой прототип и посмотреть, как он работает. Если вы задаете вопросы в списке рассылки JGroups, люди там очень полезны...

Я не могу комментировать Akka, так как я не использовал ее, но мое отвращение к Scala все равно меня от меня отпустило...

Ответ 2

Существуют ли другие библиотеки, которые могут сделать то же самое?

Apache Zookeeper. Никогда не использовал его сам, но слышал об этом.

Лично я использовал JGroups в течение нескольких лет. Вначале это было нестабильно - мой кластер из 10 кластеров из 10 узлов был разбит несколько раз в неделю (разделенный на подкластеры), но позже Bela Ban улучшил библиотеку, он работал хорошо.

Мои 5 центов на "JGroups vs Akka":

  • Конфигурация Akka Cluster проще, не так "глубоко", как JGroups "
  • Akka Cluster использует неблокирующий ввод-вывод для связи (в настоящее время поверх Netty), JGroups всегда использовали блокировку сокетов TCP (это может быть важно для больших кластеров, но есть также UDP в JGroups... Но UDP не всегда применимо...)
  • Akka Cluster предоставляет более высокоуровневые вещи, такие как кластерные маршрутизаторы и распределенный PubSub, которые хорошо интегрированы с Актерами (конечно, если вам нравятся Akka и Actors)
  • Akka Cluster охватывает большинство прецедентов, но не все: посмотрите на наше обсуждение некоторое время назад: https://groups.google.com/forum/#!topic/akka-dev/WUsi6qfV5BU

Ответ 3

Мои 2 цента. Я использовал JGroups в своем проекте для достижения аналогичных требований. Env - около 60 узлов, что немного мало, но у нас есть тонна активности между узлами (около 1MM сообщений pd). JGroups были великолепны, потому что его сетевая конфигурация действительно гибкая и довольно стабильная. Есть несколько вещей, которые вы могли бы усвоить, когда настраиваете JGroups для разделения кластера на разные центры обработки данных/локальные сети и даже на VLAN, поскольку в JGroups не так много активности пользователей, в отличие от других более новых доступных параметров Теперь. Если у вас есть время, чтобы поиграть с ним и иметь сопоставимую версию QA/Staging для вашего производства, я думаю, что JGroups - очень хороший вариант.

Ответ 4

Если вы поедете по количеству звезд на GitHub, тогда другие проекты (Cassandra, Riak, Hadoop и т.д.) также выиграют над JGroups...:-) Я бы прототип на JGroups и Aka, а затем выбрать решение, которое лучше всего подходит для вас (перформанс, функциональность, простота и т.д.). Cheers,