JGroups 3.3.0.Final 今天发布了，包含一些优化和新特性，值得关注的有：
- 消息批处理 : messages received as bundles by the transport are passed up as batches . Compared to passing individual messages up the stack, the advantage is that we have to acquire resources (such as locks) only once per batch instead of once per message . This reduces the number of lock acquisitions and should lead to less context switching and better performance in contended scenarios.
- 异步调用 API : This allows the recipient of a message in MessageDispatcher or RpcDispatcher to make the delivering thread return immediately (making it available for other requests) and to send the response later. The advantage is that it is the application which now decides how to deliver messages (e.g. sequentially or in parallel), and not JGroups. The documentation is here: http://www.jgroups.org/manual-3.x/html/user-building-blocks.html#AsyncInvocation
- UNICAST3 : this is a new reliable unicast protocol, combining the advantages of UNICAST (immediate delivery) and UNICAST3 (speed). It is the default in 3.3.
- 全新内部线程池 : to be used for internal JGroups messages only. This way, important internal JGroups messages are not impeded by the delivery of application messages ahead of them in delivery order. While this pool is not supposed to be used by application messages, it will help for example to decrease unneeded blocking (by credit messages getting queued up behind application messages), or reduce false suspicions (due to heartbeats getting handled too late, or even getting dropped).
- RELAY2 提升 : RELAY2 is the protocol which relays traffic between geographically separate sites. This will be the topic of my talk at Red Hat Summit in June.
- 全新定时器实现 : a better, simpler and faster implementation; the default in 3.3.
- 新的消息绑定 : this new bundler handles sending of individual messages and message batches equally well. Default in 3.3.