IT

Message Qeue란?(Kafka vs RabbitMQ vs ActiveMQ)

반응형

Message Qeue란?

  • MOM(Message Oriented Middleware)를 구현한 솔루션
  • 비동기 메시지를 사용하는 서비스들 사이에서 데이터를 교환해주는 역할을 함
  • Producer(sender)가 메시지를 큐에 전송하면 Consumer(receiver)가 처리하는 방식으로, producer 와 consumer 에 message 프로세스가 추가되는 것이 특징
  • LinkedIn에서 구직정보들을 처리할수 있는 플랫폼으로 개발이 시작되었다.
  • MOM은 MQ을 포괄하고 있고, MQ에는 Kafka, RabbitMQ, ActiveMQ 등이 있음

Kafka vs RabbitMQ vs ActiveMQ

  • 3가지 전부 비동기 통신을 제공하고, 보낸 사람과 받는 사람을 분리합니다.
  • 하지만 업무에 따라서 다른 목적을 가지고 있습니다. Kafka(Apache)는 처리량이 많은 분산 메시징 시스템에서 사용하며
  • RabbitMQ, ActiveMQ(Apache)는 신뢰할 수 있는 메시지 브로커 역할을 하는 시스템에서 사용됩니다. (물론 Kafka도 신뢰할 수 있음. 상대적으로 두개가 아직은 더 신뢰성이 높다는 뜻)
  • MQ는 broker가 producer 에게 메세지를 받아서 consumer에게 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작하기 때문에 consumer는 자신의 처리능력만큼의 메시지만 broker로부터 가져오기 때문에 최적의 성능을 낼 수 있다.

RabbitMQ = 빠르고 쉽게 구성 할 수 있으며 직관적.

  • RabbitMQ는 고성능을 목표로 AMQP 프로토콜을 사용하여 개발된 MQ 로 Erlang OTP 기반으로 개발되었다.
  • 신뢰성, 유연한 라우팅, 관리 UI의 편리성을 갖고 있습니다.
  • 실시간 모니터링이 용이하고 다양한 언어 및 OS 지원, RabbitMQ 서버간 클러스터링이 가능하다.

Kafka = 확장성, 고성능 및 높은 처리량.

  • 많은 데이터 전송과 최대 처리량을 유지하기에 대량 데이터 스트리밍에 적합하다.
  • 상태 변경이 시간순으로 기록되어하는 응용 프로그램인 이벤트 소싱(Evenet Sourcing) 저장소로 적합하다.
  • 대용량 실시간 로그 처리에 특화, 단순한 메시지 헤더를 지닌 TCP 기반의 프로토콜 사용으로 오버헤드 감소
  • 분산 시스템으로 인해 분산 및 복제 구성 장점
  • 그리하여 노드 장애에 대한 대응성을 가지고 있음
  • 프로듀서는 각 메시지를 배치로 broker에게 전달하여 TCP/IP 라운드 트립을 줄임
  • 기본적으로는 파일시스템에 저장을 통해 영속성(혹은 수명)을 보장 = 오류시 오류 지점부터 복구가 가능
  • Kafka, Kinesis(aws)는 window 단위의 데이터를 넣고 꺼낼 수 있다
  • 실시간 로그 처리에 특화되어 설계된 시스템으로 개발되어 타 MQ 대비 TPS가 매우 우수하나 특화된 솔루션이기 때문에 타 MQ 솔루션에서제공하는 다양한 기능들은 제공되지 않는다.
  • AMQP, JMS 이 아닌 단순 메시지 헤더를 이용한 TCP 통신이다.

ActiveMQ = 효율적이고 사용하기 쉬운 오픈 소스.

  • 자바로 만든 오픈소스 메시지 브로커
  • 다양한 언어와 프로토콜을 지원(Java, C, C++, C#, Ruby, Perl, Python, 그리고 PHP 클라이언트)
반응형