マルチノードクラスタリング
TsgcWSCluster — sgcWebSockets サーバーを複数のノードにスケールします。いずれかのノードでの publish や Presence イベントは、ゼロインフラのメッシュバックプレーンまたは Redis Pub/Sub バックプレーンを通じて、他のすべてのノードに接続されているサブスクライバーに届きます。既存の Publish、チャネル、Presence のコードはそのまま変更不要です。
TsgcWSCluster — sgcWebSockets サーバーを複数のノードにスケールします。いずれかのノードでの publish や Presence イベントは、ゼロインフラのメッシュバックプレーンまたは Redis Pub/Sub バックプレーンを通じて、他のすべてのノードに接続されているサブスクライバーに届きます。既存の Publish、チャネル、Presence のコードはそのまま変更不要です。
2 台以上の WebSocket サーバーをロードバランサーの背後に配置しても、あるノードで publish されたメッセージは他のノードに接続されているサブスクライバーに届きます。コンポーネントをサーバーの隣に配置し、各ノードを相互に指定するだけで、チャネル、ブロードキャスト、Presence がクラスター全体で機能します。
TsgcWSCluster
メッシュ(ゼロインフラ)または Redis Pub/Sub
Delphi 7–13 (Win32/Win64、Linux64、macOS、Android、iOS) および .NET
Enterprise
sgc プロトコルをクラスターにアタッチして開始します。あるノードのクライアントがチャネルに Publish すると、他のノードのクライアントがそれを受信します。スティッキーセッションは不要です。
uses
sgcWebSocket, sgcWebSocket_Protocols, sgcWebSocket_Cluster;
var
Server: TsgcWebSocketServer;
Protocol: TsgcWSPServer_sgc;
Cluster: TsgcWSCluster;
begin
Server := TsgcWebSocketServer.Create(nil);
Server.Port := 8080;
Protocol := TsgcWSPServer_sgc.Create(nil);
Protocol.Server := Server;
Cluster := TsgcWSCluster.Create(nil);
Cluster.EngineType := clusterMesh; // ゼロインフラのバックプレーン
Cluster.ClusterPort := 5410; // このノードのメッシュリスナー
Cluster.Peers.Add('192.168.1.101:5410'); // 他のノード
Cluster.Peers.Add('192.168.1.102:5410');
Cluster.Attach(Protocol); // このプロトコルの pub/sub をクラスター化
Cluster.Start;
Server.Active := True;
end;
var server = new TsgcWSServer { Port = 8080 };
var protocol = new TsgcWSPServer_sgc { Server = server };
var cluster = new TsgcWSCluster {
EngineType = ClusterEngineType.Mesh, // ゼロインフラのバックプレーン
ClusterPort = 5414,
Protocol = protocol
};
cluster.Peers.Add("192.168.1.101:5414");
cluster.Peers.Add("192.168.1.102:5414");
cluster.Start();
server.Active = true;
2 つのバックプレーンエンジン、ドロップイン可能な Attach、クラスター全体の Presence(コンポーネントリファレンスより)。
公開プロパティ EngineType: clusterMesh(外部インフラ不要)または clusterRedis(Redis Pub/Sub)。
プロパティ: ClusterPort、Peers。各ノードがリッスンし、ピアに直接接続します。追加のインストールは不要です。
プロパティ: 大規模なデプロイ向けの RedisHost、RedisPort、RedisChannel。
メソッド: Attach、Detach、Start、Stop。sgc プロトコルと Presence をそれぞれ 1 回の呼び出しでクラスター化します。
メンバー一覧はすべてのノードにわたる和集合になります。切断されたノードのメンバーは消去されるため、ゴーストメンバーは残りません。
プロパティ Ready、ConnectedPeerCount、およびイベント OnPeerConnected、OnPeerDisconnected、OnClusterMessage。
このコンポーネントが基盤とするバックプレーンの一次資料です。
コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。
| デモプロジェクト — 02.WebSocket_Protocols\14.MultiNode_Clustering すぐに実行可能な 2 ノードのサンプルです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。 | 開く | |
| 技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |