RabbitMQ VS Kafka

JeongJun Min·2024년 1월 17일

Techeer

목록 보기
1/9

메세지 큐란?

  • 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용되는 통신 방법 중 하나, 메세지 지향 미들웨어(MOM)를 구현

MOM(Message Oriented Middleware)
비동기 메세지를 사용하는 프로그램 간 데이터 송수신

ㅇㅇ

사용 목적?

  • 서로 다른 데이터베이스를 사용
  • 동시에 많은 양의 프로세스를 처리
  • 이미지, 비디오등 대용량 데이터 처리

메세지큐의 장점?

  • 비동기
  • 낮은 결합도
  • 과잉
  • 신뢰성
  • 확장성

메세지 큐의 종류

RabbitMQ 란?

  • AMQP를 구현한 오픈소스 메세지 브로커
  • producer와 consumer 사이 메세지를 전달할 때 중간에서 브로커 역할을 한다.

AMQP(Advanced Message Queuing Protocol): 기존 메세지 큐에 Exchange 라우터와 Binding 관계가 존재

ㅇㅇ

  1. Producer: 요청을 보내는 주체, 메세지를 exchange에 Publish한다.
  2. Consumer: producer로부터 메세지를 받아 처리하는 주체
  3. Exchange: 전달받은 메세지를 어떤 queue로 보낼지 결정하는 장소
  4. Queue: 메세지를 보관하는 장소
  5. Binding: Exchange와 Queue의 관계, 보통 사용자가 특정 exchange가 특정 queue를 binding하도록 정의

Exchange 4가지 타입

  • Direct: 라우팅 키가 정확히 일치하는 Queue에 메세지 전송
  • Topic: 라우팅 키 패턴이 일치하는 Queue에 메세지 전송
  • Headers: [key:value]로 이루어진 header값을 기준으로 일치하는 Queue에 메세지 전송
  • Fanout: 해당 Exchange에 등록된 모든 Queue에 메세지 전송

KAFKA 란?

  • 고성능 분산 이벤트 스트리밍 플랫폼
  • Pub-Sub 모델의 메세지 큐 형태로 동작

ㅇㅇ

Kafka 등장 이유?

  • 시스템 복잡도 증가
  • 데이터 파이프라인 관리 어려움

ㅇㅇ

  1. Topic: 각각의 메세지를 목적에 맞게 구분할 때 사용
  2. Partition: 분산 처리를 위해 사용
  3. Offset: Consumer에서 메세지를 읽은 위치를 저장하는 값
  4. Producer: 메세지를 전송
  5. Consumer: 메세지를 읽어서 처리
  6. Broker: 카프카 서버
  7. Zookeeper: 분산 메세지큐의 메타 정보를 중앙에서 관리

Topic을 Partition으로 분리

ㅇㅇ

  • 병렬로 처리하기 위함
  • 병목 현상 방지
  • Round-Robin방식

RabbitMQ VS Kafka

  • RabbiMQ는 메세지 브로커 방식 / Kafka는 pub/sub 방식
  • Kafka는 생산자 중심적 설계 / RabbitMQ는 브로커 중심적 설계
  • RabbitMQ는 단순한 로직에 적합 / Kafka는 거대한 양과 처리량 필요시 적합

참고

[서버] 메세지 큐

[RabbitMQ] 기초 개념

RabbitMQ란?

[Apache Kafka] 카프카란 무엇인가?

profile
개발계발

0개의 댓글