다중 노드 클러스터링 (TsgcWSCluster) — sgcWebSockets | eSeGeCe

Multi-node Clustering

TsgcWSCluster — sgcWebSockets 서버를 여러 노드로 확장해요. 어느 노드에서 발생한 게시(Publish) 또는 Presence 이벤트든 제로 인프라 메시 백플레인이나 Redis Pub/Sub 백플레인을 통해 다른 모든 노드에 연결된 구독자에게 전달돼요. 기존 Publish, 채널, Presence 코드는 그대로 유지돼요.

TsgcWSCluster

두 대 이상의 WebSocket 서버를 로드 밸런서 뒤에 배치해도, 한 노드에서 게시된 메시지가 다른 노드에 연결된 구독자에게 그대로 전달돼요. 컴포넌트를 서버 옆에 추가하고 노드들이 서로를 가리키게 하면, 채널, 브로드캐스트, Presence가 클러스터 전체에서 동작해요.

컴포넌트 클래스

TsgcWSCluster

백플레인

메시(제로 인프라) 또는 Redis Pub/Sub

플랫폼

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

에디션

Enterprise

컴포넌트를 추가하고, 노드들이 서로를 가리키게 하면, 끝이에요

sgc 프로토콜을 클러스터에 연결하고 시작하세요. 한 노드의 클라이언트가 채널에 게시(Publish)하면, 다른 노드의 클라이언트가 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;                // 제로 인프라 백플레인
  Cluster.ClusterPort := 5410;                       // 이 노드의 메시 리스너
  Cluster.Peers.Add('192.168.1.101:5410');          // 다른 노드들
  Cluster.Peers.Add('192.168.1.102:5410');
  Cluster.Attach(Protocol);                          // 이 프로토콜의 pub/sub를 클러스터링
  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,   // 제로 인프라 백플레인
    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;

내부 구성

두 가지 백플레인 엔진, 손쉬운 Attach, 클러스터 전역 Presence — 컴포넌트 레퍼런스에서 발췌했어요.

백플레인 엔진

게시된 속성 EngineType: clusterMesh(외부 인프라 불필요) 또는 clusterRedis(Redis Pub/Sub).

메시

속성: ClusterPort, Peers. 각 노드가 직접 수신 대기하며 피어에 연결돼요 — 별도로 설치할 것이 없어요.

Redis

속성: 대규모 배포를 위한 RedisHost, RedisPort, RedisChannel.

Attach

메서드: Attach, Detach, Start, Stop. 각각 한 번의 호출로 sgc 프로토콜과 Presence를 클러스터링해요.

클러스터 전역 Presence

멤버 명단은 모든 노드에 걸친 합집합이 돼요. 노드가 끊기면 해당 멤버가 정리되므로 유령 멤버가 남지 않아요.

상태 점검

속성 Ready, ConnectedPeerCount 및 이벤트 OnPeerConnected, OnPeerDisconnected, OnClusterMessage.

사양 및 참조

이 컴포넌트가 기반으로 하는 백플레인의 공식 출처예요.

문서 및 데모

컴포넌트 레퍼런스로 바로 이동하거나, 바로 실행 가능한 데모 프로젝트를 다운로드하고, 체험판을 받아 보세요.

데모 프로젝트 — 02.WebSocket_Protocols\14.MultiNode_Clustering 바로 실행 가능한 두 노드 예제예요. sgcWebSockets 패키지에 포함되어 있어요 — 아래에서 체험판을 다운로드하세요.
기술 문서 (PDF) Delphi 및 C++ Builder용 기능, 빠른 시작, 코드 샘플 및 기본 소스 참조 — 이 컴포넌트 전용이에요.
사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요.

WebSocket 서버를 여러 노드로 확장해 보세요

무료 체험판을 다운로드하고 메시 또는 Redis 백플레인으로 sgcWebSockets 배포를 클러스터링해 보세요.