Clustering multi-nodo (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Clustering multi-nodo

TsgcWSCluster — scala i tuoi server sgcWebSockets su più nodi. Un evento di pubblicazione o di Presence su un nodo qualsiasi raggiunge i subscriber connessi a ogni altro nodo, tramite un backplane mesh a zero infrastruttura o un backplane Redis Pub/Sub. Il tuo codice esistente di Publish, canali e Presence rimane invariato.

TsgcWSCluster

Metti due o più server WebSocket dietro un bilanciatore di carico e un messaggio pubblicato su un nodo raggiunge comunque i subscriber connessi agli altri. Trascina il componente accanto al tuo server, fai puntare i nodi l'uno all'altro, e canali, broadcast e Presence funzionano sull'intero cluster.

Classe del componente

TsgcWSCluster

Backplane

Mesh (zero infrastruttura) o Redis Pub/Sub

Piattaforme

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

Edizione

Enterprise

Trascina il componente, fai puntare i nodi l'uno all'altro, vai

Collega il protocollo sgc al cluster e avvialo. Un client su un nodo può pubblicare (Publish) su un canale e i client sugli altri nodi lo ricevono, senza sticky session.

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 a zero infrastruttura
  Cluster.ClusterPort := 5410;                       // listener mesh di questo nodo
  Cluster.Peers.Add('192.168.1.101:5410');          // gli altri nodi
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // metti in cluster il pub/sub di questo protocollo
  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 a zero infrastruttura
    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;

Cosa c'è dentro

Due motori di backplane, Attach immediato e Presence sull'intero cluster — presi dal riferimento del componente.

Motori di backplane

Proprietà published EngineType: clusterMesh (nessuna infrastruttura esterna) o clusterRedis (Redis Pub/Sub).

Mesh

Proprietà: ClusterPort, Peers. Ogni nodo ascolta e si connette direttamente ai suoi peer — niente di aggiuntivo da installare.

Redis

Proprietà: RedisHost, RedisPort, RedisChannel per deployment più grandi.

Attach

Metodi: Attach, Detach, Start, Stop. Metti in cluster il protocollo sgc e la Presence con una sola chiamata ciascuno.

Presence sull'intero cluster

L'elenco dei membri diventa l'unione su tutti i nodi; quando un nodo cade i suoi membri vengono rimossi, quindi niente membri fantasma.

Stato di salute

Proprietà Ready, ConnectedPeerCount ed eventi OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Specifiche e riferimenti

Fonti autorevoli per il backplane su cui si basa questo componente.

Documentazione e demo

Vai direttamente al riferimento del componente, prendi il progetto demo pronto all'uso e scarica la versione di prova.

Progetto demo — 02.WebSocket_Protocols\14.MultiNode_Clustering Esempio a due nodi pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.

Scala i tuoi server WebSocket su più nodi

Scarica la versione di prova gratuita e metti in cluster il tuo deployment sgcWebSockets con un backplane mesh o Redis.