JGroups 5.0 的首个 Alpha 版本已发布,此版本对 API 进行了重大变更。开发团队还透露在首个测试版发布之前,可能还会有更多的 API 变更。
下面了解一下 5.0 的新功能。
5.0 最大的变化是 Message(消息)现在变成了接口,并提供了不少实现它的消息类,罗列几个如下:
- BytesMessage:这是旧的 4.x Message 类的替代方案,具有一个字节数组作为有效负载
- ObjectMessage:支持接收一个对象作为有效负载
- NioMessage:具有 NIO ByteBuffer 作为有效负载
- EmptyMessage:这个类不包含负载,主要用于发送仅包括 header 的消息,例如心跳信息。JGroups 内部主要使用此类,它的内存占用量极低
- CompositeMessage:用于携带其他消息的消息类型
这个变动的主要优点是使用了不同的消息类型,即不必像 4.x 消息中那样将有效载荷编组为字节数组,现在可以将有效载荷添加到消息中而无需进行编组,仅在网络中发送消息之前才进行编组。这种方式节省了一次内存分配。
另一个优点是应用程序可以注册自己的消息类型,这意味着我们可以控制消息的创建方式,例如使用堆外内存(off-heap memory)而不是堆内存。
其他值得注意的变更包括:
- 移除了许多繁琐的东西,例如一些 AuthToken 实现:SASL, S3_PING 和 GOOGLE_PING (现在有了更好的替代方案)
- 首个 Alpha 版本仍可在 Java 8 下运行,但 Java 11 将会是未来的基础,团队表示将会使用 Java 11 的特有语言特性
暂无更多评论