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/176https://sarc.io/index.php/miscellaneous/1615-message-queue-mq
https://heowc.tistory.com/35
https://en.wikipedia.org/wiki/Message_queue
댓글
댓글 쓰기