Clustering multi-nœud (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Clustering multi-nœud

TsgcWSCluster — met à l'échelle tes serveurs sgcWebSockets sur plusieurs nœuds. Un événement de publication ou de Présence sur n'importe quel nœud atteint les abonnés connectés à tous les autres nœuds, via un backplane mesh sans infrastructure ou un backplane Redis Pub/Sub. Ton code Publish, de canaux et de Présence existant reste inchangé.

TsgcWSCluster

Place deux serveurs WebSocket ou plus derrière un répartiteur de charge et un message publié sur un nœud atteint toujours les abonnés connectés aux autres. Dépose le composant à côté de ton serveur, fais pointer les nœuds les uns vers les autres, et les canaux, les diffusions et la Présence fonctionnent à l'échelle du cluster.

Classe du composant

TsgcWSCluster

Backplane

Mesh (sans infrastructure) ou Redis Pub/Sub

Plateformes

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

Édition

Enterprise

Dépose le composant, fais pointer les nœuds les uns vers les autres, c'est parti

Attache le protocole sgc au cluster et démarre-le. Un client sur un nœud peut publier sur un canal et les clients des autres nœuds le reçoivent, sans sessions persistantes (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 sans infrastructure
  Cluster.ClusterPort := 5410;                       // le listener mesh de ce nœud
  Cluster.Peers.Add('192.168.1.101:5410');          // les autres nœuds
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // met en cluster le pub/sub de ce protocole
  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 sans infrastructure
    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;

Ce qu'il contient

Deux moteurs de backplane, un Attach prêt à l'emploi et une Présence à l'échelle du cluster — issus de la référence du composant.

Moteurs de backplane

Propriété publiée EngineType : clusterMesh (aucune infrastructure externe) ou clusterRedis (Redis Pub/Sub).

Mesh

Propriétés : ClusterPort, Peers. Chaque nœud écoute et se connecte directement à ses pairs — rien d'autre à installer.

Redis

Propriétés : RedisHost, RedisPort, RedisChannel pour les déploiements de plus grande envergure.

Attach

Méthodes : Attach, Detach, Start, Stop. Mets en cluster le protocole sgc et la Présence avec un seul appel chacun.

Présence à l'échelle du cluster

La liste des membres devient l'union de tous les nœuds ; un nœud qui tombe voit ses membres purgés, donc aucun membre fantôme.

État de santé

Propriétés Ready, ConnectedPeerCount et événements OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Spécifications et références

Sources de référence pour le backplane sur lequel ce composant s'appuie.

Documentation et démos

Lien direct vers la référence du composant, récupère le projet de démo prêt à l'emploi et télécharge l'essai.

Projet de démo — 02.WebSocket_Protocols\14.MultiNode_Clustering Exemple à deux nœuds prêt à l'emploi. Livré avec le paquet sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code pour Delphi et C++ Builder, et références de sources primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant chaque composant de la bibliothèque.

Mets à l'échelle tes serveurs WebSocket sur plusieurs nœuds

Télécharge l'essai gratuit et mets en cluster ton déploiement sgcWebSockets avec un backplane mesh ou Redis.