본문 바로가기

기타

[MQ] Message Queue란?

반응형

Message Queue란?

 

MOM (Message Oriented Middleware)를 구현하여 서버와 클라이언트 사이의 통신을 비동기 메시지 처리 방식으로 처리하는 시스템이다.

 

서버와 클라이언트 사이의 통신에서 이미지 처리, 비디오 인코딩, 대용량 데이터 처리 등과 같이 리소스의 소모가 큰 데이터 통신을 진행해야 하는 경우 처리할 수 있는 양이 한정되어있기 때문에 요청의 지연이나 손실, 서버의 다운 등이 발생할 수 있는데, MQ 서비스는 서버와 클라이언트 사이의 미들웨어로 비동기 메시지를 사용하여서 이런 통신들을 처리하는데 사용합니다. 기존에 분산되어있던 데이터 처리를 MQ의 Message Broker 한 곳에서 처리하도록 두어서 로드밸런싱과 MQ clustering 기능 등을 사용하여서 작업을 분산시켜서 데이터 전송을 처리합니다.

 

Publisher (Provider)가 message를 생성해서 MQ로 전송합니다. 전송된 message는 Message Queue의 topic에 저장됩니다. topic에 저장된 message들은 순차적으로 Subscriber (Consumer)에게 전달됩니다.

https://www.cloudamqp.com/blog/what-is-message-queuing.html

 

■ MOM (Message Oriented Middleware)

- 메시지 지향 미들웨어

- 분산 시스템 간의 메세지를 주고받는 기능을 지원하는 소프트웨어 또는 하드웨어 인프라

 

■ MQ (Message Queue)

- MOM을 구현한 시스템

 

■ Broker

- Message Queue 시스템

- publisher와 subscriber 사이의 중간 역할

 

■ AMQP (Advanced Message Queueing Protocol)

- 메시지 지향 미들웨어를 위한 프로토콜

- 서로다른 프로세스나 프로그램 간의 메시지를 전달할 때 사용하는 프로토콜

 

 

Message Queue Service의 종류

 

■ RabbitMQ

- AMQT 프로토콜을 구현한 프로그램으로 신뢰성, 안정성 등 성능을 충족할 수 있는 다양한 기능을 제공합니다.

- 로컬 네트워크에 있는 여러 RabbitMQ 서버를 클러스터링할 수 있고 논리적인 브로커도 가능합니다.

- 다양한 프로그래밍 언어에 대한 지원이 가능합니다.

 

Active Queue

- 풀 자바 메시지 서비스 (JMS) 클라이언트와 함께 자바로 만든 오픈소스 메시지 브로커입니다.

- 다양한 프로그램이 언어와 클러스터링 기능 등을 지원합니다.

- REST api를 사용하여 웹 기반의 메시징 기능을 지원합니다.

■ Kafka

- 대용량 실시간 로그 처리에 특화되어 설계된 메시징 시스템으로 시스템 대비 TPS가 우수합니다.

- 대용량 특화 시스템으로 범용 메시징 시스템에서의 기능은 다양하게 제공되지 않습니다.

- AMQP 프로토콜이나 JMS api를 사용하지 않고 단순한 메시지 헤더를 지닌 TCP 기반의 프로토콜을 사용합니다. 이를 통해서 프로토콜에 의한 오버헤드를 감소시켰습니다.

- Producer가 broker에게 다수의 메시지를 전송할 때, 각 메시지를 개별적으로 전송해야하는 기존 메시징 시스템과는 달리, 다수의 메시지를 batch 형태로 broker에게 한번에 전달하도록 하여 TCP/IP 라운드트립의 횟수를 줄일 수 있습니다.

- 메시지를 기본적으로 메모리에 저장하는 다른 시스템들과 달리 파일에 저장합니다.

 

 

<reference>

- Wikipedia: Message queue

- AWS: 메시지 대기열

- Message Queue는 왜 사용해야 하는가?

[오픈소스] 메시지큐(Message Queue) 알아보기

반응형