Альтернативы JGroups
Я хочу создать распределенное приложение на JVM, которое имеет несколько узлов, и мне нужна библиотека, которая позволит мне:
- Управление членством в кластере / сетке, т. е. я хочу получать уведомления об отпуске / присоединении
- управление сообщениями между членами кластера
Я нашел два решения:
- JGroups - это работает, но выглядит датами и не широко используется
- Akka - он основан на Scala, и его кластерный модуль не похож на зрелые
Есть ли другие библиотеки, которые могут сделать то же самое?
4 ответа:
JGroups существует с 1998 года и поэтому очень стабильна , не датирована вообще ! Он активно развивается (я ведущий разработчик).
Он используется многими приложениями / системами, если вы загуглите для него, вы найдете много ссылок. Только на этой неделе телекоммуникационная компания, использующая его, побила рекорд по величине кластера, построенного с помощью JGroups с кластером 1115 узлов !
Кластеризация JBoss (Wildfly) (Infinispan) также использует JGroups. Предлагаю написать небольшой прототип и посмотреть, как он работает. Если вы задаете вопросы в списке рассылки JGroups, люди там очень полезны...
Я не могу комментировать Akka, так как я не использовал его, но мое отвращение к Scala удержало бы меня от него в любом случае...
Есть ли другие библиотеки, которые могут сделать то же самое?Apache Zookeeper . Сам никогда им не пользовался, но слышал о нем.
Лично я использовал JGroups в течение нескольких лет. Вначале он был нестабилен - мой TCP-кластер из ~ 10 узлов ломался несколько раз в неделю (разделялся на подкластеры), но позже Бэла бан улучшил библиотеку, она работала хорошо.
Мои 5 центов в "JGroups vs Akka":
- Кластер Акка конфиг проще, не так "глубок", как JGroups ' one
- Akka Cluster использует неблокирующий ввод-вывод для связи (в настоящее время на вершине Netty), JGroups всегда использовали блокирующие TCP-сокеты (это может быть критично для больших кластеров; но в JGroups также есть UDP... Но UDP не всегда применим...)
- Akka Cluster предоставляет более высокоуровневые вещи, такие как cluster-aware routers & distributed PubSub, которые хорошо интегрированы с акторами (конечно, если вам нравится Akka & Actors)
- Акка Кластер охватывает большинство вариантов использования, но не все: посмотрите на наше обсуждение некоторое время назад: https://groups.google.com/forum/#! тема/akka-dev/WUsi6qfV5BU
Мои 2 цента. Я использовал JGroups в своем проекте для достижения аналогичных требований. Env-это около 60 узлов, что немного мало, но у нас есть тонна активности между узлами (около 1 мм сообщений pd). JGroups была замечательной, потому что ее сетевая конфигурация действительно гибкая и довольно стабильная. Есть несколько вещей, которые вы можете узнать на собственном горьком опыте, когда вы настраиваете JGroups для кластера, разделенного на различные центры обработки данных/локальные сети и даже VLAN, так как на сервере не так много активности пользователей. JGroups, в отличие от других новых опций, которые доступны сейчас. Если у вас есть время, чтобы поиграть с ним и иметь сопоставимый QA/Staging env для вашего производства, я думаю, что JGroups-очень хороший вариант.