Clustering multinó (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Clustering multinó

TsgcWSCluster — escale seus servidores sgcWebSockets por múltiplos nós. Um evento de publicação ou de Presence em qualquer nó alcança os assinantes conectados a cada outro nó, por meio de um backplane mesh sem infraestrutura ou de um backplane Redis Pub/Sub. Seu código existente de Publish, de canais e de Presence permanece inalterado.

TsgcWSCluster

Coloque dois ou mais servidores WebSocket atrás de um balanceador de carga e uma mensagem publicada em um nó ainda alcança os assinantes conectados aos outros. Adicione o componente ao lado do seu servidor, aponte os nós uns para os outros, e canais, broadcasts e Presence funcionam em todo o cluster.

Classe do componente

TsgcWSCluster

Backplane

Mesh (sem infraestrutura) ou Redis Pub/Sub

Plataformas

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

Edição

Enterprise

Adicione o componente, aponte os nós uns para os outros e pronto

Faça Attach do protocolo sgc ao cluster e inicie-o. Um cliente em um nó pode publicar (Publish) em um canal e os clientes nos outros nós o recebem, sem 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 sem infraestrutura
  Cluster.ClusterPort := 5410;                       // listener mesh deste nó
  Cluster.Peers.Add('192.168.1.101:5410');          // os outros nós
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // agrupa em cluster o pub/sub deste protocolo
  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 sem infraestrutura
    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;

O que está incluído

Dois motores de backplane, Attach plug-and-play e Presence em todo o cluster — extraídos da referência do componente.

Motores de backplane

Propriedade publicada EngineType: clusterMesh (sem infraestrutura externa) ou clusterRedis (Redis Pub/Sub).

Mesh

Propriedades: ClusterPort, Peers. Cada nó escuta e conecta-se diretamente aos seus peers — nada extra a instalar.

Redis

Propriedades: RedisHost, RedisPort, RedisChannel para implantações maiores.

Attach

Métodos: Attach, Detach, Start, Stop. Agrupe em cluster o protocolo sgc e o Presence com uma chamada cada.

Presence em todo o cluster

A lista de membros torna-se a união de todos os nós; um nó que cai tem seus membros removidos, então sem membros fantasmas.

Saúde

Propriedade Ready, ConnectedPeerCount e eventos OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Especificações e referências

Fontes autoritárias para o backplane sobre o qual este componente é construído.

Documentação e Demos

Acesse a referência do componente, obtenha o projeto de demonstração pronto para executar e baixe a versão de avaliação.

Projeto de Demo — 02.WebSocket_Protocols\14.MultiNode_Clustering Exemplo de dois nós pronto para executar. Incluído no pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento Técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fonte primária — somente este componente.
Manual do Usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.

Escale seus servidores WebSocket por múltiplos nós

Baixe a versão gratuita e agrupe em cluster sua implantação sgcWebSockets com um backplane mesh ou Redis.