ETC

RabbitMQ와 Kafka

D_Helloper 2023. 6. 13. 03:50

메시지 큐 (Message Queue)

프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 통신 방법

  • End-Point 간 직접 통신이 아닌 중간의 Queue를 통해 데이터를 통신

Kafka

  • LinedIn에서 개발한 메시지 큐 방식 기반, 분산 메시징 시스템

kafka 용어 설명

  • Broker : 각각의 kafka server를 이야기 함
  • Topic : Producer에서 전달한 메시지가 저장되는 곳, 메시지들의 카테고리
  • Partition : Topic은 여러 파티션으로 구성되어 있음, topic내에서 메시지가 분리되어 실제로 저장
  • Offset : 하나의 메시지 단위를 레코드라고 표현, 이러한 레코드들의 ID가 오프셋, 배열의 Index 개념
  • Zookeeper : Kafka Cluster에서 분산 메시지 큐의 정보를 관리
  • Consumer Group : 토픽을 읽어가기 위해 Customer를 모아놓은 것

kafka의 동작 순서

  • Producer에서 데이터를 kafka cluster에 전달
  • 지정된 topic내 partition에 메시지를 저장
  • 설정된 replication 값에 따라 또 다른 topic내 partition에 복제를 위한 메시지를 저장
  • Consumer Group안에 있는 어느 하나의 Consumer가 수신 처리 수행

RabbitMQ

  • AMQP 프로토콜을 구현한 메시지 브로커

RabbitMQ 용어 설명

  • Exchange : 수신한 메시지에 특정 알고리즘을 적용하거나 메시지를 담게 될 Queue를 찾는 과정
    • fanout : 모든 queue에 메시지 전달
    • direct : producer에서 전달한 key와 완전히 일치하는 queue에 메시지 전달
    • topic : direct와 다르게 전달한 key와 패턴을 정하고 패턴과 일치하는 queue에 메시지 전달
    • header : key:value로 이루어진 header값을 기준으로 일치하는 queue에 메시지 전달
  • Binding : Exchange의 type에 의해 전달된 메시지를 Queue로 보내는 것

RabbitMQ 동작 순서

  • Producer에서 데이터를 Broker에 전달
  • Exchage가 어떤 Queue에 저장할지 찾고 해당 Queue에 저장
  • 데이터가 저장되고 나서 각각의 Consumer에서 데이터를 가져가고 수신 된 데이터는 삭제

 

  kafka  rabbitMQ
데이터 접근 Pull : Consumer는 메시지 처리를 위해 kafka
cluster로 요청
Push : 데이터가 발생한 시점에, Queue에서 Consumer로 Push
방식 pub/sub방식
생산자 중심적인 설계로 구성, 생성자가 원하는 각 메시지를 게시할 수 있도록 메시지 배포 패턴
메시지 브로커 방식
브로커 중심적인 설계로 구성, 지정된 수신인에게 메시지를 확인, 라이팅,저장 및 배달하는 역할 수행· 보장되는 메시지 전달에 초점
메시지 삭제
여부
Consumer가 메시지를 가져가더라도 계속 유지 Consumer가 Queue에서 메시지를 가져가면 삭제
용도 스트리밍 데이터를 저장, 읽기,분석 등에 적합 높은 처리량과 안정적인 백그라운드 작업에 적합, 애플리케이션 내부 및 애플리케이션 간의 통신에 적합