Message Queue

유수민·2022년 8월 7일
1

지식창고

목록 보기
42/60
post-thumbnail

📌개념

  • 대용량의 데이터를 처리하기 위해 분산 처리할때 쓰는 것
  • 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나
  • 메시지를 전송 및 수신하기 위해 중간에 메시지 큐을 두는 버퍼 느낌
    • 수신 서비스가 사용 중이거나 연결이 끊어졌을 때 임시 메시지 저장소를 제공
  • 시스템이 처리할 일을 차례대로 넣어놓고 시스템이 하나씩 작업을 가져가 처리하도 다음 작업을 또 가져올 수 있는 Store-and-Forward 방식의 시스템

그림 출처) https://www.cloudamqp.com/blog/what-is-message-queuing.html

💡 개념 비교

📖MOM ( Message Oriented Middleware )

  • 메시지 미들웨어의 이론, 개념, 설계도. 직접적인 구현체는 아님
  • 어플리케이션들의 메시지를 중간에서 관리해주는 시스템
    • 메시지를 보내는 이는 받는 이의 주소를 몰라도 보낼 수 있게 됨 → 클라이언트 시스템간의 종속성 및 결속성을 낮춤
    • 주고 받는 메시지를 데이터베이스 등에 기록하는 등의 백업 역할 → 안정성을 높임
    • 라우팅 규칙을 활용하여 하나의 메시지로도 특정 여러 클라이언트가 받을 수 있도록 지원
    • 송수신자가 직접 통신하는게 아니므로 다수의 서버가 MOM을 활용하게 되면 구조가 전체적으로 복잡해지고, 이에 대한 오버헤드가 발생할 수 있음


그림 출처) Message Broker란? (tistory.com)

📖Message Broker

  • 송신자로부터 전달받은 메시지를 수신자로 전달해주는 중간 역할 → 전달자 역할

📖Message Queue

  • Message 브로커안의 메시지가 적재되는 공간 → 실질적인 처리형태

📌사용이유

  • Producer와 Consumer간의 속도가 다를 때, 둘 중 어느 한 컴포넌트가 장애가 발생했을 때 상황 등에 대응이 가능하다. ( 비동기 방식 )
  • 장애 전파를 막을 수 있다.
  • Producer 서비스에 전달되는 것을 보장한다.

📌단점

큐가 가득 차서 더는 큐에 메세지를 저장할 수 없는 상황에서는 메세지를 다른 곳에 보존하거나 버리게 된다. 송신측이 수신측보다 빠르면 큐의 크기가 작아서 해당 문제가 빈번할 수 있다. 즉, 메세지큐가 문제시 전체에 영향을 끼친다.

📌종류

  • RabbitMQ
  • Apache Kafka
profile
배우는 것이 즐겁다!

0개의 댓글