인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

cwnsgur13579님의 프로필 이미지

작성한 질문수

RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기

11.Pub-Sub모델을 이용한 실시간 알림 (WebSocket, STOMP 이용) part 2

msa 환경에서 브로드캐스트는 어떻게 이루어지나요?

해결된 질문

작성

·

125

0

학습중 궁금한 것은 언제든 문의 하세요.

질문을 최대한 자세히 남겨주시면 반드시 답변 드리도록 하겠습니다.

추가로 알고 싶은 내용도 요청해주시면 강의 자료를 업데이트 해서 제공할 예정입니다.


선생님 좋은 강의 감사합니다. 강의 재밌게 듣고 있습니다.

브로드캐스트활용해서 채팅(실시간 알림)기능 구현 강의 듣던 중 궁금한게 생겼는데요

그 전 강의에서 8080 8081 두개 서버 띄어놓고 라운드로빈으로 분배되는 것 설명하셨을 때 처럼 두개 띄어놓고 8080 8081 각각의 웹소켓으로 메세지 전송했는데 각각의 서버 별로 별도로 브로드캐스팅이 되는 것 같더라고요. 전체로 브로드캐스팅 하려면 보통 어떤 식으로 구현하나요?

답변 2

0

코드빌런님의 프로필 이미지
코드빌런
지식공유자

안녕하세요. 8080, 8081을 설정해서 분배하는 것은 WorkQueue 방식의 예제로 설명한 것이고, 전체 구독자에게 발행하는 것은 Pub/Sub 모델이나 Fanout Exchange로 설정하면 됩니다.

이 부분은 MSA 환경과 관련이 없고(MSA든 아니든 상관없이) 큐를 바라보고 있는 워커 노드가 중간 브로커(Exchange)를 통해 연결이 되면 동시에 Consume을 할 수 있습니다.

 

강의에 나온 pub/sub 모델과 Routing 모델 강의까지 살펴보시면 도움이 될거 같습니다.

즐거운 공부 되세요~

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. cwnsgur13579님.

MSA(마이크로서비스 아키텍처) 환경에서 모든 서버에 메시지를 브로드캐스트하는 방법에 대한 질문을 주셨네요. 이는 다양한 방법으로 구현할 수 있으며, RabbitMQ와 같은 메시지 브로커를 활용하는 방법도 그중 하나입니다.

  1. 중앙 메시지 브로커 사용: 모든 서버가 하나의 중앙 메시지 브로커에 연결되어 있을 때, 어느 한 서버에서 메시지를 수신하면, 이것을 브로커가 다른 모든 서버에 전달할 수 있습니다. RabbitMQ의 경우, fanout exchange를 사용하여 메시지를 연결된 모든 큐에 보내는 방법을 고려해 볼 수 있습니다.

  2. Redis Pub/Sub: Redis의 Pub/Sub 기능을 이용하여 각 서버가 특정 채널을 구독하고, 메시지를 해당 채널에 게시하면 구독 중인 모든 서버에 메시지가 전송됩니다.

  3. WebSocket 클러스터링 도입: HAProxy나 Nginx를 이용하여 WebSocket 연결을 처리하며, 메시지를 복제(또는 동기화)하여 모든 노드에 메시지가 전달되게 설정할 수 있습니다.

이와 관련되어 더 깊이 있는 설명은 아래와 같은 게시물을 참고해보시면 도움이 될 것 같습니다:

답변이 유용했길 바라며, 더 궁금한 점이 있으시다면 언제든지 이어서 질문해 주세요. 곧 지식공유자께서도 추가 답변을 제공하실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.