본문 바로가기
Spring/Spring Cloud

메세지 큐

코동이 2021. 11. 7.

*메세지 큐(Message Queue)

 메시지 큐는 시스템이 처리할 일을 차례대로 넣어놓고 시스템이 하나씩 작업을 가져가 처리하도 다음 작업을 또 가져올 수 있는 Store-and-Forward 방식의 시스템이다. 이런 의미에서 보면 job scheduler와 유사한 역할을 한다.

 

 

 

 

 

*pub/sub 구조

 Pub/Sub 모델은 비동기 메시징 방식이다. 이메일 발신에서 사용하는  To:, CC:처럼 특정 수신자를 정하는 것이 아니라, Publlish 하는 Topic(토픽)을 Subscriber(구독자) 신청한 모든 수신자에게 메시지를 보내는 방식이다. 수신자는 송신자의 IP 주소나, 특별한 정보를 알 필요가 없이 원하는 주제만 사전에 구독 신청을 하면 된다. 따라 송수신자는 loosely coupled로 엮여있고 높은 확장성을 제공한다. 메시지 큐의 대다수의 구현체는 Pub/Sub 구조를 가지고 있다.

 

* 메세지 브로커(Message Broker)

 Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다. 이 때 메시지가 적재되는 공간을 Message Queue(메세지 큐)라고 하며 메시지의 그룹을 Topic(토픽)이라고 한다.

 

cache server를 redis에 별도로 저장하듯이, 메세지 큐 또한 별도의 서버를 둘 수 있다.(kafka, rabbitMQ)

 

queue들이 모두 동일하지 않으므로 해당 queue들을 구분하기 위해서 exchange로 나누어서 저장하고 전송하도록 방법을 다르게 한다.

 

 

*주의점

 주의해야 하는건, DB를 사용하는 경우 Query를 이용하여 원하는 데이터만 필터링하여 조회할 수 있지만, 메시지 브로커를 이용하면 Queue에 적재된 그대로 사용하기 때문에 불가능하다. 따라서, 적재할 때 필터링된 데이터를 적재하던가 적재된 데이터를 Logstash를 이용하여 필터링해서 사용해야 한다. 또한, 메시지 큐에 적재된 메시지는 주로 7일을 보관하기 때문에 장기간 보관해야하는 경우 별도의 저장소에 저장해야한다.

 

 

*참고

- [Tech.] Message Broker란?

https://heodolf.tistory.com/49

반응형

'Spring > Spring Cloud' 카테고리의 다른 글

샤딩  (0) 2021.11.07
DNS  (0) 2021.11.07
웹서비스 확장전략  (0) 2021.11.07