ストアファクトリー
その StoreFactory socketio4j がセッションごとのストアや共有マップを作成・管理する方法を定義し、同時に分散イベント同期のための EventStore を公開します。 ストレージとイベントの伝播は 切り離されています。これにより、任意のデータストアバックエンドを互換性のある任意のイベント配布機構と組み合わせることができます。
これにより以下のような柔軟な組み合わせが可能になります:
メモリストレージ + Kafka ベースのイベント同期
Redis ストレージ + NATS pub/sub
Hazelcast ストレージ + Redis Streams
メモリストレージ + 配布なし(MemoryEventStore) …またはその他の展開固有の組み合わせ。
主な特徴
セッション毎のストア作成 — 各クライアント接続は専用のデータストアを持ちます
共有マップ作成 — 名前付きマップをネームスペース、アダプター、プラグインに提供します
EventStore の公開 — ストレージの選択に依存しないイベントバックエンドを提供します
合成可能な設計 — ストレージとイベント伝播は別々のシステムから提供できます
設定可能な動作 — ストレージを置き換えずにイベント配布を差し替えられます
動作概要
createStore(sessionId)→ セッションスコープのストアを返します(ストレージバックエンドに紐づきます)createMap(name)→ セッション間の状態共有のための名前付き共有マップを返しますeventStore()→ 設定されたEventStore(デフォルトまたはカスタム)init(...)→ サーバー起動前にストレージとイベント同期を準備しますshutdown()→ シャットダウン時に割り当てられたリソースをクリーンアップします
組み合わせの自由
ストレージバックエンド(StoreFactory)
イベントバックエンド(EventStore)
有効
展開例
メモリ
Kafka
✔️
ローカルセッションデータ + グローバルなイベント伝播
Redis
NATS
✔️
Redis マップ + 低レイテンシのメッセージング
Hazelcast
Redis Streams
✔️
Hazelcast クラスタリング + 耐久的なストリーム同期
メモリ
メモリ
✔️
単一ノード、配布なし
Hazelcast
Kafka
✔️
Hazelcast セッションレプリケーション + Kafka 同期
設計の要約
StoreFactory が決定します セッションごとのメタデータがどこに存在するか
EventStore が決定します イベントがサーバー間でどのように配布されるか
両者は 独立して置き換え可能です ランタイムで
利点
👍 ハイブリッド展開と段階的な移行パスに対応 👍 ストレージとイベント層は独立して進化可能 👍 分散状態とイベント輸送の結合を回避 👍 単一ノードとクラスタ構成の両方で機能します
最終更新
役に立ちましたか?