[Kafka] RadditMQ vs Kafka

Use_Silver·2022년 3월 28일
0

Kafka

목록 보기
2/2

목적 :
Kafka를 공부하다가 AMQP카프카가 다르게 동작한다는 것을 알게 되었다.
AMQP의 개념을 몰랐기 때문에 어떠한 차이점이 있는지, 기존의 데이터를 전송하는 프로토콜과 Kaka는 어떤 차이점이 있는지 알지 못했다.

따라서 메시지 교환 프로토콜을 공부하기 위해 이 내용을 정리해본다.

01. Introduction

AMQP란?

AMQP(Advanced Message Queing Protocol)란 MQ의 오픈소스에 기반한 표준 프로토콜이다.
AMQP는 기존의 플랫폼 종속적인 MQ들의 약점을 보완하기위해 등장했다. 즉, AMQP는 다른 시스템간 메시지를 최대한 효율적인 방식으로 교환하기 위한 프로토콜이다.

AMQP 라우팅 모델

이미지 출처

Producer가 Consumer에게 메시지를 보내면, Exchange가 메시지에 전송된 라우팅 키 교환 유형에 정의된 규칙에 따라 메시지 복사본을 대기열에 배포한다.

메시지처리에 가장 널리 사용되는 플랫폼은 Kafka와 RabbitMQ이다.

02. 메시지 큐

RadditMQ와 카프카 둘 다 메시지 큐 이다.

메시지 큐

  • 프로세스끼리 데이터를 교환할 때 사용하는 통신방법
  • 통신을 위한 큐 자료구조
  • 로그 관리 서비스에 주로 사용
  • 다른 API로부터 데이터 송수신 가능
  • 다양한 애플리케이션에서 비동기 통신 가능
  • 이메일 발송 및 문서 업로드 가능
  • 많은 양의 프로세스 처리 가능

메시지 큐 장점

  • 비동기(Asynchronous): Queue에 데이터 넣기 때문에 나중에 처리할 수 있음
    • 전화통화 or 화상회의 x
    • 이메일, 문자 메시지를 전송하는 방법
  • 비동조(Decoupling): Application과 서로 분리 가능
  • 탄력성(Resilience): 일부가 실패해도 전체에 영향을 받지 않음
  • 과잉(Redundancy): 실패할 경우 재실행이 가능함
  • 보증(Guarantees): 작업이 처리된 것을 확인할 수 있음
  • 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있음

03. RabbitMQ vs Kafka

RabbitMQ 특징

  • AMQP 프로토콜 기반 구축
  • 기존 기술과 호환성이 좋음
  • 소비자 중심의 설계 -> 구성이 쉬움
  • 동기/비동기식 처리 가능

Kafka 특징

  • 여러 서버에 분산 및 클러스터링 -> 고가용성
  • 생산자 중심의 설계
  • 분산처리에 효과적
  • 구독방식의 비동기식 구성
  • 고성능 방식

RabbitMQ vs Kafka

  • 메시지 브로커 방식 vs publish-subscribe 방식
  • 메시지 브로커 방식
    메시지 대기열 패턴을 사용하면 프로듀서가 대기열에 메시지를 전달한다.
    컨슈머가 메시지를 받을 준비가 되면 Queue에 연결하고 Message를 검색하여 Queue에서 메시지를 제거한다.
  • publish-subscribe 방식
    생산자가 원하는 메시지를 게시할 수 있도록 하는 메시지 배포 패턴이다. Kafka에서는 컨슈머가 메시지를 받아도, 파티션에 메시지가 일정시간 남아있기 때문에 다른 컨슈머가 이전에 저장된 메시지를 다시 읽을 수 있다.

정리하자면, Kafka는 최대 처리량으로 스트리밍을 하는 것에 적합하므로, 실시간 처리에 적합하고 RabbitMQ는 신속한 요청과 응답이 필요한 웹서버에 적합하다. 따라서 RabbitMQ는 안정적인 백그라운드 작업, 장시간 실행되는 태스크 같이 안정적인 서비스에 적합하다.


References

profile
과정은 힘들지만😨 성장은 즐겁습니다🎵

0개의 댓글