JGroups的替代品

时间:2013-09-25 19:26:04

标签: akka distributed-computing jgroups akka-cluster

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

  • 管理群集/网格成员资格,即我希望在离开/加入时收到通知
  • 管理群集成员之间的消息

我找到了两个解决方案:

  • JGroups - 它有效,但它看起来是日期而不是广泛使用
  • Akka - 它是基于Scala的,其群集模块看起来不像成熟

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

4 个答案:

答案 0 :(得分:28)

JGroups自1998年以来一直存在,因此非常稳定,完全没有约会!它正在积极发展(我是主要开发者)。

它被很多应用程序/系统使用,如果你google它,你会发现很多引用。 就在本周,一家使用它的电信公司打破了使用JGroups和1115节点集群构建的最大集群的记录!

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

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

答案 1 :(得分: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/akka-dev/WUsi6qfV5BU

答案 2 :(得分:5)

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

答案 3 :(得分:4)

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