circleHazelcast 环形缓冲区

HazelcastPubSubRingBufferEventStore 为 socketio4j 提供分布式事件存储,使用 Hazelcast 可靠主题 / 环形缓冲区。 它通过在集群节点之间广播事件来实现水平扩展,以便状态更改、加入、离开、确认和其他内部事件在多个服务器之间同步。

关键特性

  • 分布式且复制 — 事件通过 Hazelcast 传递到每个活动的集群节点

  • 异步且非阻塞分发 — ReliableTopic 在 Netty 事件循环之外处理投递

  • 基于环形缓冲区的可靠性 — 根据 Hazelcast 配置,最近的消息在节点重启后仍可保留

  • 流式广播语义 — 每个节点接收所有事件(非负载均衡)

  • 重复防止 — 来自同一节点的事件使用 进行过滤 nodeId

工作原理

  • 每次发布将事件写入 Hazelcast ReliableTopic(根据模式为单个或按类型)

  • 已订阅的事件类型将向后端环形缓冲区附加消息监听器

  • 消息传递给本地监听器 仅当它们来自不同节点时

  • 监听器注册按事件类型跟踪,以便干净地取消订阅和关闭

模式

模式
行为
何时使用

MULTI_CHANNEL

每个事件类型都有自己的 ReliableTopic

默认;减少争用并避免跨事件干扰

SINGLE_CHANNEL

所有事件路由到 ALL_SINGLE_CHANNEL

当需要跨所有事件类型的严格顺序时

优点

👍 适用于多节点部署 👍 在无需外部代理的情况下同步 socketio4j 服务器 👍 使用 Hazelcast 原语进行集群,无需 Kafka/Redis 基础设施 👍 当系统中已包含 Hazelcast 时,配置简单

限制

ℹ️ 环形缓冲区容量决定消息保留时间 — 溢出时丢弃最旧数据 ℹ️ 不提供事务性投递或去重以实现严格一次语义 ℹ️ 投递顺序按分区/主题,不是跨主题的全局顺序 ℹ️ 集群健康或分区迁移可能导致临时重复投递

传递保证: 至少一次语义 — 事件监听器应具备幂等性以安全处理重复项。

最后更新于

这有帮助吗?