기본 콘텐츠로 건너뛰기

Message Queue 란 무엇인가

Message Queue 란 무엇인가??


  • 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미
  • MOM을 구현한 시스템을 메시지 큐(MessageQueue: MQ)라 함
  • Producer(sender) 가 메시지를 큐에 전송하면 Consumer(receiver) 가 처리하는 방식으로, producer 와 consumer 에 message 프로세스가 추가되는 것이 특징

메시지 큐의 장점

  • 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다.
  • 비동조(Decoupling): 애츨리케이션과 분리할 수 있습니다.
  • 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다.
  • 과잉(Redundancy): 실패할 경우 재실행 가능합니다.
  • 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다.
  • 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있습니다.

메시지 큐 종류

Apache ActiveMQ, Apache Kafka, Apache Qpid, Apache RocketMQ, Beanstalkd, Enduro/X, HTTPSQS, JBoss Messaging, JORAM, RabbitMQ, Sun Open Message Queue, and Tarantool 등

Apache ActiveMQ

  • Java Message Service (JMS)를 사용하는 오픈소스 MQ
  • Java, C, C ++, C #, Ruby, Perl, Python, PHP 등 다양한 크로스 언어 클라이언트 및 프로토콜 지원
  • Spring 지원으로 Spring xml config 메커니즘 이용 가능
  • JDBC 지원으로 DB 높은 퍼포먼스 가능
  • 높은 퍼포먼스를 위해 클러스터링 구성 가능
  • Restful API 제공
  • 단 모니터링 도구제공하지 않음

RabbitMQ

  • 고성능을 목표로 AMQP 프로토콜을 사용하여 개발된 MQ 로 Erlang OTP 기반으로 개발
  • 실시간 모니터링이 용이
  • 다양한 언어 및 OS 지원
  • RabbitMQ 서버간 클러스터링이 가능
  • 신뢰성, 안정성과 성능을 충족할 수 있도록 다양한 기능을 제공
  • 단 Window OS 시, Erlang, OpenSSL 설치 필요

Kafka

  • 대용량 실시간 로그 처리에 특화되어 설계된 메시지 시스템
  • 기존 범용 메시징 시스템대비 TPS가 매우 우수
  • AMQP나 JMS를 사용하지 않고 단순 메시지 헤더를 지닌 TCP 통신을 사용하여 프로토콜에 의한 오버헤드 감소
  • MQ는 broker가 producer 에게 메세지를 받아서 consumer에게 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작 : Consumer 사양에 따라 퍼포먼스가 달라짐
  • 메시지를 기본적으로 메모리에 저장하는 기존 메시징 시스템과는 달리 메시지를 파일 시스템에 저장 : 대기 중 인 메시지로 인한 시스템 성능감소 최소화
  • 개별 전송이 아닌 다수 전송 가능(Batch 처리 가능)
  • 단 특화된 솔루션이기 때문에 타 MQ 솔루션에서 제공하는 다양한 기능들은 제공되지 않음

출처

https://12bme.tistory.com/176
https://sarc.io/index.php/miscellaneous/1615-message-queue-mq
https://heowc.tistory.com/35
https://en.wikipedia.org/wiki/Message_queue

댓글

이 블로그의 인기 게시물

블록체인 거래소 모니터링시스템 구축이야기(2/?) - 서버 아키텍처

  코인 거래소 모니터링시스템 구축이야기(2/?) 코인 거래소 모니터링 시스템 구축 (가칭 : 김프멈춰) 서버 구성 사용자가 확인할 서비스 페이지, 데이터 저장소에 대한 서버는 NAS 서버로 운영 일일 Data 크롤링 서버는 Cloud 서버 이용하여 운영 - 서비스페이지 및 데이터 저장소 (Nas 서버) : Docker container ubuntu 20.04 - 일일 크롤링 서버 (Cloud at Cost Cloud 서버) : CentOS 7 서버 아키텍처 서버 아키텍처 레퍼런스 빗썸 : https://apidocs.bithumb.com/ 업비트 : https://docs.upbit.com/ 홍콩 Bitfinex : https://docs.bitfinex.com/docs 몽고 DB 설치 : https://coterie.tistory.com/20 1. 개요 :  https://limdh3325.blogspot.com/2021/04/1.html 2. 서버 아키텍처 :  https://limdh3325.blogspot.com/2021/04/2.html 3. MongoDB 설치 :  https://limdh3325.blogspot.com/2021/04/3.html 4. 데이터 모델링 :  https://limdh3325.blogspot.com/2021/05/4.html 5. MongoDB 저장 :  https://limdh3325.blogspot.com/2021/06/5.html