Klastrowanie wielowęzłowe (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Klastrowanie wielowęzłowe

TsgcWSCluster — skaluj swoje serwery sgcWebSockets na wielu węzłach. Zdarzenie publikacji lub Presence na dowolnym węźle dociera do subskrybentów połączonych z każdym innym węzłem, poprzez backplane mesh bez infrastruktury lub backplane Redis Pub/Sub. Twój istniejący kod Publish, kanałów i Presence pozostaje bez zmian.

TsgcWSCluster

Umieść dwa lub więcej serwerów WebSocket za load balancerem, a wiadomość opublikowana na jednym węźle nadal dotrze do subskrybentów połączonych z pozostałymi. Dodaj komponent obok swojego serwera, wskaż węzłom siebie nawzajem, a kanały, rozgłaszanie i Presence działają w całym klastrze.

Klasa komponentu

TsgcWSCluster

Backplane

Mesh (bez infrastruktury) lub Redis Pub/Sub

Platformy

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

Edycja

Enterprise

Dodaj komponent, wskaż węzłom siebie nawzajem, gotowe

Podłącz protokół sgc do klastra i uruchom go. Klient na jednym węźle może opublikować (Publish) wiadomość na kanale, a klienci na pozostałych węzłach ją otrzymają, bez sesji przyklejonych (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 bez infrastruktury
  Cluster.ClusterPort := 5410;                       // nasłuch mesh tego węzła
  Cluster.Peers.Add('192.168.1.101:5410');          // pozostałe węzły
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // klastrowanie pub/sub tego protokołu
  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 bez infrastruktury
    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;

Co jest w środku

Dwa silniki backplane, gotowy Attach i Presence w całym klastrze — zaczerpnięte z dokumentacji komponentu.

Silniki backplane

Opublikowana właściwość EngineType: clusterMesh (bez zewnętrznej infrastruktury) lub clusterRedis (Redis Pub/Sub).

Mesh

Właściwości: ClusterPort, Peers. Każdy węzeł nasłuchuje i łączy się bezpośrednio ze swoimi peerami — nic dodatkowego do zainstalowania.

Redis

Właściwości: RedisHost, RedisPort, RedisChannel dla większych wdrożeń.

Attach

Metody: Attach, Detach, Start, Stop. Klastrowanie protokołu sgc i Presence jednym wywołaniem każde.

Presence w całym klastrze

Lista członków staje się sumą ze wszystkich węzłów; węzeł, który odpada, ma swoich członków usuwanych, więc bez członków-duchów.

Kondycja

Właściwość Ready, ConnectedPeerCount oraz zdarzenia OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

Specyfikacje i źródła

Autorytatywne źródła dla backplane, na którym opiera się ten komponent.

Dokumentacja i dema

Bezpośredni link do dokumentacji komponentu, gotowy do uruchomienia projekt demo i pobieranie wersji próbnej.

Demo Project — 02.WebSocket_Protocols\14.MultiNode_Clustering Gotowy do uruchomienia przykład z dwoma węzłami. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz źródła pierwotne — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Skaluj swoje serwery WebSocket na wielu węzłach

Pobierz bezpłatną wersję próbną i klastruj swoje wdrożenie sgcWebSockets z backplane mesh lub Redis.