Multi-node clustering (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Multi-node clustering

TsgcWSCluster — schaal je sgcWebSockets-servers over meerdere nodes. Een publish- of Presence-gebeurtenis op een willekeurige node bereikt abonnees die met elke andere node verbonden zijn, via een mesh-backplane zonder infrastructuur of een Redis Pub/Sub-backplane. Je bestaande Publish-, channel- en Presence-code blijft ongewijzigd.

TsgcWSCluster

Plaats twee of meer WebSocket-servers achter een load balancer en een bericht dat op de ene node wordt gepubliceerd bereikt nog steeds abonnees die met de andere verbonden zijn. Plaats het component naast je server, laat de nodes naar elkaar wijzen, en channels, broadcasts en Presence werken cluster-breed.

Componentklasse

TsgcWSCluster

Backplane

Mesh (zonder infrastructuur) of Redis Pub/Sub

Platforms

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

Editie

Enterprise

Plaats het component, laat de nodes naar elkaar wijzen, klaar

Koppel het sgc-protocol aan het cluster en start het. Een client op de ene node kan naar een channel publiceren en clients op de andere nodes ontvangen het, zonder 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 zonder infrastructuur
  Cluster.ClusterPort := 5410;                       // de mesh-listener van deze node
  Cluster.Peers.Add('192.168.1.101:5410');          // de andere nodes
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // cluster de pub/sub van dit protocol
  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 zonder infrastructuur
    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;

Wat zit erin

Twee backplane-engines, drop-in Attach en cluster-brede Presence — uit de componentreferentie.

Backplane-engines

Published property EngineType: clusterMesh (geen externe infrastructuur) of clusterRedis (Redis Pub/Sub).

Mesh

Properties: ClusterPort, Peers. Elke node luistert en maakt rechtstreeks verbinding met zijn peers — niets extra te installeren.

Redis

Properties: RedisHost, RedisPort, RedisChannel voor grotere implementaties.

Attach

Methodes: Attach, Detach, Start, Stop. Cluster het sgc-protocol en Presence met telkens één aanroep.

Cluster-brede Presence

De ledenlijst wordt de unie over alle nodes; van een node die wegvalt worden de leden opgeschoond, dus geen ghost members.

Gezondheid

Property Ready, ConnectedPeerCount en events OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Specificaties & referenties

Officiële bronnen voor de backplane waarop dit component voortbouwt.

Documentatie & demo's

Deep-link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Demoproject — 02.WebSocket_Protocols\14.MultiNode_Clustering Kant-en-klaar voorbeeld met twee nodes. Wordt meegeleverd in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen voor dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.

Schaal je WebSocket-servers over meerdere nodes

Download de gratis proefversie en cluster je sgcWebSockets-deployment met een mesh- of Redis-backplane.