存储工厂
该 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 决定 事件如何在服务器间分发
两者都是 独立且可替换的 在运行时
优点
👍 混合部署和逐步迁移路径 👍 存储层和事件层可以独立演进 👍 避免将分布式状态与事件传输耦合 👍 适用于单节点与集群部署
最后更新于
这有帮助吗?