ストアファクトリー

その 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 が決定します イベントがサーバー間でどのように配布されるか

  • 両者は 独立して置き換え可能です ランタイムで

利点

👍 ハイブリッド展開と段階的な移行パスに対応 👍 ストレージとイベント層は独立して進化可能 👍 分散状態とイベント輸送の結合を回避 👍 単一ノードとクラスタ構成の両方で機能します

最終更新

役に立ちましたか?