Hazelcast 环形缓冲区
该 HazelcastPubSubRingBufferEventStore 为 socketio4j 提供分布式事件存储,使用 Hazelcast 可靠主题 / 环形缓冲区。 它通过在集群节点之间广播事件来实现水平扩展,以便状态更改、加入、离开、确认和其他内部事件在多个服务器之间同步。
关键特性
分布式且复制 — 事件通过 Hazelcast 传递到每个活动的集群节点
异步且非阻塞分发 — ReliableTopic 在 Netty 事件循环之外处理投递
基于环形缓冲区的可靠性 — 根据 Hazelcast 配置,最近的消息在节点重启后仍可保留
流式广播语义 — 每个节点接收所有事件(非负载均衡)
重复防止 — 来自同一节点的事件使用 进行过滤
nodeId
工作原理
每次发布将事件写入 Hazelcast ReliableTopic(根据模式为单个或按类型)
已订阅的事件类型将向后端环形缓冲区附加消息监听器
消息传递给本地监听器 仅当它们来自不同节点时
监听器注册按事件类型跟踪,以便干净地取消订阅和关闭
模式
MULTI_CHANNEL
每个事件类型都有自己的 ReliableTopic
默认;减少争用并避免跨事件干扰
SINGLE_CHANNEL
所有事件路由到 ALL_SINGLE_CHANNEL
当需要跨所有事件类型的严格顺序时
优点
👍 适用于多节点部署 👍 在无需外部代理的情况下同步 socketio4j 服务器 👍 使用 Hazelcast 原语进行集群,无需 Kafka/Redis 基础设施 👍 当系统中已包含 Hazelcast 时,配置简单
限制
ℹ️ 环形缓冲区容量决定消息保留时间 — 溢出时丢弃最旧数据 ℹ️ 不提供事务性投递或去重以实现严格一次语义 ℹ️ 投递顺序按分区/主题,不是跨主题的全局顺序 ℹ️ 集群健康或分区迁移可能导致临时重复投递
传递保证: 至少一次语义 — 事件监听器应具备幂等性以安全处理重复项。
最后更新于
这有帮助吗?