소켓 응용 4/5 · SCALE
서버가 두 대면
방도 둘로 갈라집니다.
각 서버는 자신에게 연결된 사용자만 압니다. 브로커로 실시간 이벤트를 퍼뜨리고, 저장소로 놓친 이벤트를 복구하는 역할 분리를 봅니다.
이 편의 핵심 질문다른 서버에 붙은 사용자에게 어떻게 전달할까?브로커로 퍼뜨리고
저장소로 복구
저장소로 복구
나쁜 결과와 안전한 결과를 비교하세요
한 채팅방을 서버 A와 B에 걸쳐 연결합니다
보는 순서① 서버 분리 선택→② A에서 발행→③ B 수신 확인
- 1분산 연결
- 2발행
- 3단절
- 4결론
실험 시작을 누르면 첫 장면부터 움직입니다방이 둘로 분리
공유 경로연결 없음각 서버 메모리만 사용
room-7A ┆ 끊어진 방 ┆ BLOCAL ONLY
서버끼리 분리 시나리오입니다. 실험 시작을 눌러 네 장면을 따라가세요.
시작 전
화면에서 코드로 옮길 때
이 편의 원리 세 가지
서버 A의 메모리는 서버 B에 연결된 사용자를 알지 못합니다.
온라인 서버 인스턴스에 토픽 이벤트를 fan-out합니다.
끊긴 사용자가 마지막 offset 이후 이벤트를 다시 읽게 합니다.
구현 체크리스트
최소 네 조각으로 시작하세요.
데모의 시각 요소를 실제 프로토콜 필드와 런타임 동작으로 옮기면 됩니다.
- 1공통 room ID모든 서버가 같은 규칙으로 만드는 토픽 이름
- 2Pub/Sub 브로커현재 살아 있는 서버에 빠르게 이벤트 전달
- 3내구성 저장소고유 event ID와 순서를 유지하는 로그
- 4중복 허용 소비자재생 이벤트가 겹쳐도 한 번만 화면에 반영
실험을 마쳤다면