Apache Kafka

  • Kafka는 게시-구독 기반으로 내결함성 메시징 시스템이며, 확장성이 뛰어남
  • Kafka는 전통적 메시지 브로커를 대체하고, 분산형의 큰 처리량을 위해 만들어짐.
  • 다른 메시징 시스템과 비교하여 Kafka는 처리량, 파티셔닝, 복제 및 내결함성이 뛰어나 대규모 메시지 처리 응용 프로그램에 적합
cf. What is 'Messaging System'
  • 메시징 시스템은 한 응용 프로그램에서 다른 응용 프로그램으로 데이터를 전송함으로써, 응용 프로그램이 데이터에만 집중하여 공유 방법에 대해서는 걱정하지 않게 되는 구조
  • 분산 메시징은 안정적인 메시지 대기열인 'Queue' 개념에 기반
  • 메시지는 클라이언트 응용 프로그램과 메시징 시스템 간에 비동기적으로 처리됨
  • 두 가지 유형의 메시징 패턴이 있는데, 하나는 지점 간(Point to point). 다른 하나는 게시-구독(pub-sub) 메시징 시스템. 대부분의 메시징 패턴은 pub-sub을 사용



  1. 지점 간 메시징 시스템
  • 지점 간 시스템에서 메시지는 대기열에 유지
  • 하나 이상의 사용자가 대기열의 메시지를 사용할 수 있지만 특정 메시지는 최대 하나의 소비자만 사용할 수 있음
  • 소비자가 대기열에서 메시지를 읽으면 해당 대기열에서 메시지가 사라짐


  1. 게시-구독 메시징 시스템
  • Publish-Subscribe 시스템에서 메시지는 Topic에 유지됨
  • 지점 간 시스템과 달리 소비자는 하나 이상의 Topic을 구독하고 해당 주제의 모든 메시지를 사용할 수 있음
  • Publish-Subscirbe 시스템에서 메시지 생성자는 게시자이고, 소비자는 구독자

What is Kafka?

  • kafka는 분산 게시-구독 메시징 시스템이며 대용량 데이터를 처리할 수 있는 견고한 대기열로, 한 끝점에서 다른 끝점으로 메시지를 전달할 수 있게 함
  • Kafka는 오프라인 및 온라인 메시지 소비 모두에 적합
  • Kafka 메시지는 데이터 손실을 방지하기 위해 디스크에 유지되고 클러스터 내에 복제됨
  • 실시간 스트리밍 데이터 분석을 위해 Storm 및 Spark와 매우 잘 통합됨

Kafka Terminology

  • Topics: 특정 범주에 속하는 메시지 스트림으로, 데이터는 Topic에 저장됨. Topic은 Partition으로 분할되며, 각 Topic에 대해 Kafka는 mini-partition을 하나의 Partition으로 유지. 이러한 각 Partition에는 메시지가 변경 불가능한 순서로 구성되며, Partition은 동일한 크기의 세그머트 파일 세트로 구현됨

  • Partition: Topic에는 많은 파티션이 있을 수 있으므로, 임의의 양의 데이터를 처리할 수 있음

  • Broker: 브로커는 게시된 데이터를 유지 관리하는 시스템. 각 브로커에는 Topic 당 0개 이상의 분할 영역이 있을 수 있음. Topic에 N개의 파티션이 있고, N개의 브로커가 있는 경우 각 브로커에는 하나의 Partition이 있다고 가정

  • Producer: Producer는 Kafka Topic의 메시지 게시자. Producer는 Broker에게 데이터를 보내며, 메시지를 게시할 때 마다 Broker는 마지막 세그먼트 파일에 메시지를 간단하게 추가. 또한 Producer는 원하는 특정 Partition에 메시지를 보낼 수도 있음

  • Consumer: Consumer는 브로커로부터 데이터를 소비. 또한 브로커에서 데이터를 가져와 하나 이상의 주제를 구독하고 게시된 메시지를 사용


+ Recent posts