Multi-Node-Clustering (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Multi-Node-Clustering

TsgcWSCluster — skaliere deine sgcWebSockets-Server über mehrere Knoten. Ein Publish- oder Presence-Ereignis auf einem beliebigen Knoten erreicht Abonnenten, die mit jedem anderen Knoten verbunden sind, über ein Mesh-Backplane ohne Infrastruktur oder ein Redis-Pub/Sub-Backplane. Dein vorhandener Publish-, Kanal- und Presence-Code bleibt unverändert.

TsgcWSCluster

Stelle zwei oder mehr WebSocket-Server hinter einen Load Balancer, und eine auf einem Knoten veröffentlichte Nachricht erreicht weiterhin die mit den anderen verbundenen Abonnenten. Platziere die Komponente neben deinem Server, richte die Knoten aufeinander aus, und Kanäle, Broadcasts und Presence funktionieren clusterweit.

Komponentenklasse

TsgcWSCluster

Backplane

Mesh (ohne Infrastruktur) oder Redis Pub/Sub

Plattformen

Delphi 7–13 (Win32/Win64, Linux64, macOS, Android, iOS) und .NET

Edition

Enterprise

Komponente platzieren, die Knoten aufeinander ausrichten, los geht's

Hänge das sgc-Protokoll an das Cluster und starte es. Ein Client auf einem Knoten kann in einen Kanal publishen, und Clients auf den anderen Knoten empfangen es, ohne Sticky Sessions.

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;                // Backplane ohne Infrastruktur
  Cluster.ClusterPort := 5410;                       // Mesh-Listener dieses Knotens
  Cluster.Peers.Add('192.168.1.101:5410');          // die anderen Knoten
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // Pub/Sub dieses Protokolls clustern
  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,   // Backplane ohne Infrastruktur
    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;

Was steckt drin

Zwei Backplane-Engines, Drop-in-Attach und clusterweite Presence — direkt aus der Komponentenreferenz.

Backplane-Engines

Veröffentlichte Eigenschaft EngineType: clusterMesh (keine externe Infrastruktur) oder clusterRedis (Redis Pub/Sub).

Mesh

Eigenschaften: ClusterPort, Peers. Jeder Knoten lauscht und verbindet sich direkt mit seinen Peers — nichts zusätzlich zu installieren.

Redis

Eigenschaften: RedisHost, RedisPort, RedisChannel für größere Deployments.

Attach

Methoden: Attach, Detach, Start, Stop. Clustere das sgc-Protokoll und Presence mit je einem Aufruf.

Clusterweite Presence

Die Mitgliederliste wird zur Vereinigung über alle Knoten hinweg; fällt ein Knoten aus, werden seine Mitglieder entfernt, sodass keine Geistermitglieder zurückbleiben.

Zustand

Eigenschaften Ready, ConnectedPeerCount sowie Ereignisse OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Backplane, auf dem diese Komponente aufbaut.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, hol dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Demo-Projekt — 02.WebSocket_Protocols\14.MultiNode_Clustering Sofort lauffähiges Zwei-Knoten-Beispiel. Im sgcWebSockets-Paket enthalten — lade die Testversion unten herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder sowie Primärquellen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek behandelt.

Skaliere deine WebSocket-Server über mehrere Knoten

Lade die kostenlose Testversion herunter und clustere dein sgcWebSockets-Deployment mit einem Mesh- oder Redis-Backplane.