Clustering multinodo (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Clustering multinodo

TsgcWSCluster — escala tus servidores sgcWebSockets entre múltiples nodos. Un evento de publicación o de Presence en cualquier nodo alcanza a los suscriptores conectados a todos los demás nodos, a través de un backplane en malla sin infraestructura o un backplane Redis Pub/Sub. Tu código existente de Publish, canales y Presence permanece sin cambios.

TsgcWSCluster

Coloca dos o más servidores WebSocket detrás de un balanceador de carga y un mensaje publicado en un nodo seguirá alcanzando a los suscriptores conectados a los demás. Coloca el componente junto a tu servidor, apunta los nodos entre sí, y los canales, los broadcasts y Presence funcionan en todo el clúster.

Clase del componente

TsgcWSCluster

Backplane

Malla (sin infraestructura) o Redis Pub/Sub

Plataformas

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

Edición

Enterprise

Coloca el componente, apunta los nodos entre sí y listo

Vincula el protocolo sgc al clúster e inícialo. Un cliente en un nodo puede publicar (Publish) en un canal y los clientes de los otros nodos lo reciben, sin sesiones persistentes (sticky).

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 sin infraestructura
  Cluster.ClusterPort := 5410;                       // listener de malla de este nodo
  Cluster.Peers.Add('192.168.1.101:5410');          // los otros nodos
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // agrupa el pub/sub de este protocolo en el clúster
  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 sin infraestructura
    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;

Qué hay dentro

Dos motores de backplane, Attach sin fricción y Presence en todo el clúster — tomados de la referencia del componente.

Motores de backplane

Propiedad publicada EngineType: clusterMesh (sin infraestructura externa) o clusterRedis (Redis Pub/Sub).

Malla

Propiedades: ClusterPort, Peers. Cada nodo escucha y se conecta directamente a sus pares — nada extra que instalar.

Redis

Propiedades: RedisHost, RedisPort, RedisChannel para despliegues más grandes.

Attach

Métodos: Attach, Detach, Start, Stop. Agrupa el protocolo sgc y Presence en el clúster con una sola llamada cada uno.

Presence en todo el clúster

La lista de miembros se convierte en la unión de todos los nodos; cuando un nodo cae, sus miembros se purgan, así que no hay miembros fantasma.

Estado

Propiedades Ready, ConnectedPeerCount y eventos OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Especificaciones y referencias

Fuentes autorizadas para el backplane sobre el que se construye este componente.

Documentación y demos

Accede directamente a la referencia del componente, descarga el proyecto demo listo para ejecutar y descarga la prueba.

Proyecto demo — 02.WebSocket_Protocols\14.MultiNode_Clustering Ejemplo de dos nodos listo para ejecutar. Se incluye en el paquete sgcWebSockets — descarga la prueba más abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la librería.

Escala tus servidores WebSocket entre nodos

Descarga la prueba gratuita y agrupa en clúster tu despliegue de sgcWebSockets con un backplane en malla o Redis.