Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alternatives to JGroups

I want to create a distributed applications on JVM which has a number of nodes, and need a library which allow me to:

  • Manage cluster/grid membership, i.e. I want to get notifications on leave/join
  • Manage messages between cluster members

I have found two solutions:

  • JGroups - it works but it looks dates and not widely used
  • Akka - it's Scala based and its cluster module doesn't look like mature

Are there any other libraries which can do the same?

like image 766
Konstantin Solomatov Avatar asked Sep 25 '13 19:09

Konstantin Solomatov


People also ask

Why is JGroups used for?

JGroups is a library for reliable one-to-one or one-to-many communication written in the Java language. It can be used to create groups of processes whose members send messages to each other. JGroups enables developers to create reliable multipoint (multicast) applications where reliability is a deployment issue.

What is JGroups in Java?

JGroups is a Java API for reliable messages exchange. It features a simple interface that provides: a flexible protocol stack, including TCP and UDP. fragmentation and reassembly of large messages. reliable unicast and multicast.

Under which circumstances a cluster uses TCP IP transport protocol using JGroups?

This may be the case when operating over a WAN, where routers might discard IP multicast packets. Usually, UDP is used as transport in LANs, while TCP is used for clusters spanning WANs. The transport protocol, uses TCP (from TCP/IP) to send unicast and multicast messages.

What is infinispan JGroups?

Infinispan uses the JGroups library to handle all network communications. JGroups enables cluster node detection, a process called discovery, and reliable data transfer between nodes. JGroups also handles the process of nodes entering and exiting the cluster and master node determination for the cluster.


1 Answers

JGroups has been around since 1998 and is therefore very stable, not dated at all ! It is being actively developed (I'm the lead dev).

It is used by a lot of applications/systems out there, if you google for it, you'll find a lot of references. Just this week, a telecom company using it broke the record for largest cluster built with JGroups with a 1115 node cluster !

JBoss (Wildfly) clustering (Infinispan) uses JGroups as well. I suggest write a small prototype and see how it performs. If you ask questions on the JGroups mailing list, the people there are very helpful...

I can't comment on Akka, as I haven't used it, but my distaste for Scala would keep me away from it anyway...

like image 59
Bela Ban Avatar answered Sep 19 '22 15:09

Bela Ban