ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RabbitMQ] RabbitMQ와 Kafka의 차이점에 대해 알아보기, 선택 가이드라인 정하기
    데이터 엔지니어링/RabbitMQ 2022. 8. 23. 20:46
    반응형

    Kafka란?

    • 오픈 소스 분산 이벤트 스트리밍 플랫폼. java와 scala로 작성하여 스트림처리 와 pub/sub 메세지 버스 역할 을 한다.
    • 풀 기반 접근 방식을 이용함 더 높은 처리량과 효과적인 메시지 전달을 위해 메세지 일관 처리 활용
    • java언어로 작성되었으며 생태계가 넓어 사용하기 좋음
    • 복잡한 라우팅에 의존하는 것이 아니라 이벤트 소싱, 스트림 처리 및 이벤트 시쿼스로 시스템 모델링 변경을 수행하는데 이상적 다단계 파이프라인에서 데이터 처리하는데에 적합
    • 실시간 데이터 분석 및 스트림 처리에서 활용성이 높음

    RabbitMQ

    • 라우팅 시스템을 지원하여 복잡한 라우팅 시나리오에서 효율적으로 메시지 전달을 용이하게 하는 오픈 소스 분산 메시지 브로커
    • 푸시 기반으로 대기열 기반 아키텍처와도 잘 작동
    • 메세지 바이너리 데이터 메시지를 수락, 저장 및 전송
    • AMQP(advenced message queueing protocol)을 기반으로 사용

     

    RabbitMQ vs Kafka 비교

      RabbitMQ Kafka
    퍼포먼스 초당 4천~1만 메세지 초당 100만 메세지
    메세지 보유 승인기반 정책 기반
    데이터 타입 transaction operation
    consumer 모드 smart broker/ dumb consumer dumb broker/ smark consumer
    토폴로지 direct, fan out, topic, header-based publish/subscribe based
    payload size 제약 없음 1MB limit
         
    use case 단순한 로직에 사용 거대한 양과 처리량 필요시 사용

    추가 정보

      RabbitMQ Kafka
    Data flow 고유한 경계 데이터 흐름. 생산자가 만들고 보내고 소비자가 받아 사용 key-value 쌍으로 할당된 주제로 지속적으로 스트리밍 무제한 데이터
    Data Usage 주문 배치, 사용자 요청과 같은 트랜잭션 데이터에 좋음 프로세스 작업, 감사 로깅 통계, 시스템 활동 운영에 사용하는 것이 좋음
    Messaging 사용자에게 메세지를 보내고 보내진 메세지는 바로 없어짐 로그로 메세지를 남기고 보존기간이있어 보존 기간 까지 오프셋형식으로 가지고 있음
    Design Model 브로커에서 많은 라우팅을 해주기 때문에 브로커에서 지속적으로 메시지를 전달하고 상태를 추적 브로커는 대기하고 메세지 보관역할만 하며 프로세싱은 소비자가 진행하여 직접 사용하는 형태

     

    확장성 및 이중화

      RabbitMQ Kafka
    Message 소비 방법 브로커가 고객에게 메시지를 전달해야하며 이러한 메세지는 일괄적으로 전송 소비자는 브로커에서 메세지를 읽고 대기열 카운터 오프셋을 추적 가능한 상태로 유지 메시지를 읽는 즉시 오프셋이 증가함
    Message 우선순위 우선 큐를 사용하여 메세지 우선순위를 지정할 수 있음 모든 메세지 우선순위 동일
    순차 주문 브로커 대기열의 메시지 순서는 rabbitmq에서 유지 zookeeper 오프셋을 추적하여 주제를 읽으려는 모든 소비자가 사용할 수 있도록 해줌
    접근방식 Push 방식 - 소비자가 메시지 검색을 인식하지 못하게 함 브로커는 고객이 메세지를 받았는지 확인 Pull 방식 - 메세지는 일괄 적으로 소비 할 수 있는 구조, 브로커는 메세지 보관만 하고 소비자가 주최가 되는 방식

     

    메세지 처리 방식

      RabbitMQ Kafka
    delivery guarante 단일 큐를 사용하는 트랜잭션과 관련하여 원자성을 보장하지 않음 파티션 내에서만 순서를 유지. kafka는 파티션의 모든 메시지가 성공하거나 실패하는지 확인
    메세지 순서 지원 x 파티셔닝을 통해 제공
    메시지 우선순위 자체적으로 우선순위를 설정하고 우선순위가 높은 순서대로 메시지를 소비 없음
    메시지 수명 메시지를 읽은 후 폐기하고 승인을 받음 로그로 메시지를 보관 정책기반으로 메세지 보관하고 삭제

    RabbitMQ 메세지 처리 방식

    Exchange라는 곳으로 메세지를 보내면 이것을 Binding rule에 의하여 바인딩 되어 consumer에게 보낸다. 메세지는 consume되면 사라진다. 보관되지 않는다.

    Kafka 메세지 처리방식

    Topic이라는 곳에 메세지를 보내주면 Consumer가 그곳을 바라보고 가져가서 사용하는 형태로 사용된다. 메세지는 정책기반에 의해 일정 주기 동안 보관되며, 메세지가 사용되더라도 사라지지않고 유지된다.

    Kafka 특징

    • 분산 이벤트 스트리밍 플랫폼
    • 높음 처리량
    • 실시간 솔루션 제공 및 활용 가능
    • 고가요성 지원

    RabbitMQ 특징

    • 안정성 지속성 전달 피드백, 게시자 확인 및 고가용성 포함
    • 기본 제공 클러스터
    • 보안 - 사용자 억세스 제어를 가지고 메시지 격리를 보장
    • 유연한 라우팅

     

    Kafka, RabbitMQ 사용가이드

    kafka는 이벤트 메시지 브로커이다. 실시간 스트림, 메세지를 정책기반으로 보관, 처리량이 높고 퍼포먼스가 잘 나오기 때문에 빅데이터에 적합 RabbitMQ는 메시지 브로커이다. 짧은 대기시간과 메시지 라우팅, 보안을 제공하기 때문에 좀 더 체계적으로 관리 하기 원할 때 사용

     

     

     

    참고 문헌

    Apache Kafka Vs RabbitMQ: Main Differences You Should Know

    RabbitMQ vs. Kafka

    반응형

    '데이터 엔지니어링 > RabbitMQ' 카테고리의 다른 글

    [RabbitMQ] RabbitMQ 설치하기(with centos7)  (0) 2022.08.23
    [RabbitMQ] RabbitMQ란?  (0) 2022.08.23

    댓글

Designed by Tistory.