JGroups的替代品

Kon*_*tov 15 jgroups distributed-computing akka akka-cluster

我想在JVM上创建一个分布式应用程序,它有许多节点,需要一个库,允许我:

  • 管理集群/网格成员资格,即我想在休假/加入时收到通知
  • 管理集群成员之间的消息

我找到了两个解决方案:

  • JGroups - 它可以工作,但它看起来是日期而不是广泛使用
  • Akka - 它是基于Scala的,它的集群模块看起来不太成熟

还有其他库可以做同样的事吗?

小智 29

JGroups自1998年以来一直存在,因此非常稳定,根本没有过时!它正在积极发展(我是领导开发者).

许多应用程序/系统都使用它,如果你谷歌它,你会发现很多参考.就在本周,一家使用它的电信公司打破了使用带有1115节点集群的JGroups构建的最大集群的记录!

JBoss(Wildfly)聚类(Infinispan)也使用JGroups.我建议写一个小原型,看看它是如何表现的.如果您在JGroups邮件列表上提问,那里的人非常有帮助......

我无法对Akka发表评论,因为我没有使用它,但我对Scala的厌恶会让我远离它...


小智 7

还有其他库可以做同样的事吗?

Apache Zookeeper.从来没有使用它,但听说过它.

就个人而言,我使用JGroups已有好几年了.一开始它不稳定 - 我的基于TCP的~10个节点的集群每周被破坏几次(分成子集群),但后来Bela Ban改进了库,它运行良好.

我对"JGroups vs Akka"的5美分:

  • Akka Cluster配置更简单,不像JGroups那样"深入"
  • Akka Cluster使用非阻塞I/O进行通信(目前在Netty之上),JGroups总是使用阻塞TCP套接字(这可能对大型集群很重要;但JGroups中也有UDP ......但UDP并不总是适用...)
  • Akka Cluster提供了更多高级功能,如集群感知路由器和分布式PubSub,它们与Actors集成得很好(当然,如果你喜欢Akka和Actors)
  • Akka Cluster涵盖了大多数用例,但并非全部:查看我们之前的讨论:https://groups.google.com/forum/#!topic / kak-dev/WUsi6qfV5BU


小智 5

如果你按 GitHub 上的星星数量计算,那么其他项目(Cassandra、Riak、Hadoop 等)也会胜过 JGroups... :-) 我会在 JGroups 和 Aka 上做原型,然后选择有效的解决方案最适合您(性能、功能、简单性等)。干杯,


小智 5

我的2美分.我在我的项目中使用了JGroups来达到类似的要求.env大约有60个节点,虽然有点小,但我们在节点之间有大量活动(大约1MM消息pd).JGroups一直很棒,因为它的网络配置非常灵活且非常稳定.当您为不同数据中心/ LAN甚至VLAN上的群集分配JGroup时,您可能会学到一些困难,因为JGroup上没有很多用户活动,这与其他可用的新选项不同.现在.如果您有时间玩它并且具有可比较的QA/Staging环境,我认为JGroups是一个非常好的选择.