alt
Home Kafka 이해하기 (vs rabbitMQ)
Post
Cancel

Kafka 이해하기 (vs rabbitMQ)


RabbitMQ와 가장 큰차이: Consumer가 Broker로부터 메시지를 pull하는 방식

  • single consumer가 아닌 multi consumer를 염두에 두고 설계되었기 때문에 그러한 환경에서 rabbitMQ보다 성능이 좋다.

    • RabbitMQ에서는 하나의 일을 하나의 consumer가 처리하기 위해 work queue 정책
  • Pull 방식으로 Consumer가 처리할 수 있을 때 메시지를 가져오므로 자원을 효율적으로 사용
    • Kafka는 메시지를 disk에 저장(영속성?)하고, 과거의 offset을 통해 움직일 수 있으므로 batch 작업에서 자원의 낭비나 지연이 발생하지 않음
    • 메시지를 쌓아두었다가 처리하는 batch Consumer 구현도 가능
  • Messaging system이라고 할 수 있다.


동작 방식

  • pub/sub 모델 기반 동작. Producer, consumer, broker 구성.
    • 특정 수신자에게 직접 보내주는 시스템이 아님.
  • publisher는 메시지를 topic을 통해 카테고리화
  • consumer는 해당 topic을 subscribe해 메시지를 읽어올 수 있음.


Zookeeper

  • 클러스터 내의 broker 분산은 ZooKeeper가 담당
  • 카프카의 노드 관리.
  • Broker는 클러스터로 구성되어 동작
  • 과반수 투표방식. 홀수로 구성


장점

  • 메시지를 파일시스템에 저장 - durability 보장.
  • Producer 중심적. 많은 양의 데이터를 파티셔닝에 기반.


RabbitMQ

: Message Broker가 Consumer에게 메시지를 push하는 방식

  • Broker는 Consumer의 처리여부에 관계없이 push
    • 따라서 메시지 소비 속도보다 생산 속도가 빠를 경우 Consumer에 부하를 주게 됨
  • RabbitMQ는 DRAM을 사용하므로 buffer를 사용하지만, DRAM을 다 사용하면 disk에 저장한다. 따라서 batch 같이 큰 작업에서는 disk로 메시지를 읽어올 경우 지연이 발생합니다.
  • RPC, Queue, 여러 서버에 Routing 등등 여러가지로 활용 가능
  • 개방형 프로토콜을 위한 AMQP 구현을 위해 개발


RabbitMQ 장점

  • 유연한 routing 가능
  • 데이터 처리보단 관리적 측면이나 다양한 기능 구현을 위한 서비스를 구축할 때 사용



Reference)

https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-%EC%B2%98%EC%9D%8C-%EC%A0%91%ED%95%98%EB%8A%94-kafka/

This post is licensed under CC BY 4.0 by the author.