存储工厂

StoreFactory 定义了 socketio4j 如何创建和管理每会话的存储和共享映射,同时也暴露出一个 EventStore 用于分布式事件同步。 存储和事件传播是 解耦的,允许任何数据存储后端与任何兼容的事件分发机制配对。

这使得可以灵活组合,例如:

  • 内存存储 + 基于 Kafka 的事件同步

  • Redis 存储 + NATS 发布/订阅

  • Hazelcast 存储 + Redis Streams

  • 内存存储 + 无分发(MemoryEventStore) ……或任何其他特定部署的配对。

主要特性

  • 每会话存储创建 — 每个客户端连接获得其自己的数据存储

  • 共享映射创建 — 为命名空间、适配器和插件提供命名映射

  • EventStore 暴露 — 提供事件后端,与存储选择无关

  • 可组合的设计 — 存储和事件传播可以来自不同的系统

  • 可配置的行为 — 在不替换存储的情况下切换事件分发

工作原理

  • createStore(sessionId) → 返回一个会话范围的 Store 绑定到存储后端

  • createMap(name) → 返回一个用于会话间状态的命名共享映射

  • eventStore() → 返回已配置的 EventStore (默认或自定义)

  • init(...) → 在服务器启动前准备存储和事件同步

  • shutdown() → 在拆卸期间清理分配的资源

混合搭配

存储后端(StoreFactory)

事件后端(EventStore)

有效的

示例部署

内存

Kafka

✔️

本地会话数据 + 全局事件传播

Redis

NATS

✔️

Redis 映射 + 低延迟消息传递

Hazelcast

Redis Streams

✔️

Hazelcast 集群 + 持久化流同步

内存

内存

✔️

单节点,无分发

Hazelcast

Kafka

✔️

Hazelcast 会话复制 + Kafka 同步

设计摘要

  • StoreFactory 决定 每会话元数据存放在哪里

  • EventStore 决定 事件如何在服务器间分发

  • 两者都是 独立且可替换的 在运行时

优点

👍 混合部署和逐步迁移路径 👍 存储层和事件层可以独立演进 👍 避免将分布式状态与事件传输耦合 👍 适用于单节点与集群部署

最后更新于

这有帮助吗?