Multi-node Clustering
TsgcWSCluster — sgcWebSockets 서버를 여러 노드로 확장해요. 어느 노드에서 발생한 게시(Publish) 또는 Presence 이벤트든 제로 인프라 메시 백플레인이나 Redis Pub/Sub 백플레인을 통해 다른 모든 노드에 연결된 구독자에게 전달돼요. 기존 Publish, 채널, Presence 코드는 그대로 유지돼요.
TsgcWSCluster — sgcWebSockets 서버를 여러 노드로 확장해요. 어느 노드에서 발생한 게시(Publish) 또는 Presence 이벤트든 제로 인프라 메시 백플레인이나 Redis Pub/Sub 백플레인을 통해 다른 모든 노드에 연결된 구독자에게 전달돼요. 기존 Publish, 채널, Presence 코드는 그대로 유지돼요.
두 대 이상의 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. 각 노드가 직접 수신 대기하며 피어에 연결돼요 — 별도로 설치할 것이 없어요.
속성: 대규모 배포를 위한 RedisHost, RedisPort, RedisChannel.
메서드: Attach, Detach, Start, Stop. 각각 한 번의 호출로 sgc 프로토콜과 Presence를 클러스터링해요.
멤버 명단은 모든 노드에 걸친 합집합이 돼요. 노드가 끊기면 해당 멤버가 정리되므로 유령 멤버가 남지 않아요.
속성 Ready, ConnectedPeerCount 및 이벤트 OnPeerConnected, OnPeerDisconnected, OnClusterMessage.
이 컴포넌트가 기반으로 하는 백플레인의 공식 출처예요.
컴포넌트 레퍼런스로 바로 이동하거나, 바로 실행 가능한 데모 프로젝트를 다운로드하고, 체험판을 받아 보세요.
| 데모 프로젝트 — 02.WebSocket_Protocols\14.MultiNode_Clustering 바로 실행 가능한 두 노드 예제예요. sgcWebSockets 패키지에 포함되어 있어요 — 아래에서 체험판을 다운로드하세요. | Open | |
| 기술 문서 (PDF) Delphi 및 C++ Builder용 기능, 빠른 시작, 코드 샘플 및 기본 소스 참조 — 이 컴포넌트 전용이에요. | Open | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | Open |