Scott Marlow and Alex Fu from Novell have re-implemented and benchmarked the NIO-based transport for JGroups. NIO provides the ability to essentially have the equivalent of C's select() in Java. What is the advantage ?
In TCP, we have one thread per connection, whereas in TCP_NIO we have one thread pool handling all connections. This is supposed to scale much better than JGroups' TCP transport: consider a cluster of N. For each node sending to the cluster, we have a mesh, with everyone connecting to everyone else (except itself). Even when assuming that idle connections are closed by the connection pool, we still have many connections which need threads to handle them. Scott et al have measured the performance of a 4-node cluster where everyone sends messages to the cluster, and came up with excellent numbers. In a nutshell, they got ~ 13000 1K messages/second on a 100Mbps ethernet, but read up on the details for yourselves at http://www.jgroups.org/javagroupsnew/docs/Perftest.html
Comments