본문 바로가기

IT 세상

Apache Kafka 개념 및 주요 기능, 사례

Apache Kafka는 높은 성능과 확장성을 요구하는 다양한 실시간 데이터 스트리밍을 위한 분산형 이벤트 스트리밍 플랫폼입니다. 다음은 Kafka의 주요 특징과 구성 요소에 대한 설명입니다.

 

1. 기본 구조

 

Producer (프로듀서) : 데이터를 생성하고 Kafka 토픽에 전송하는 역할

  • Kafka cluster 에 메세지를 보내고 넣음.
  • 메세지를 저장할 때 어떤 토픽에 저장해줘 라고 요청을 함

Consumer (컨슈머) : Kafka 토픽에서 데이터를 읽어오는 역할

  • Kafka cluster 에서 메세지를 읽어와서 필요한 처리를 함.
  • 어떤 토픽에서 메세지를 읽어올래 라고 처리함.

ZooKeeper (주키퍼) : Kafka cluster 를 관리함.

  • ZooKeeper 속에 Kafka cluster 와 관련된 정보가 기록되고 관리됨.

Kafka cluster (카프카 클러스터):

  • 메세지를 저장하는 저장소
  • 여러개의 브로커로 구성 
  • 메세지를 나눠서 저장하고 이중화 처리도 한다.
  • 장애가 나면 대체도 한다 (고가용성)
  • 데이터를 이동하는데 필요한 핵심 역할을 맡음.

Broker (브로커): Kafka 서버 인스턴스 (브로커는 각각의 서버라고 보면 됨)

  • 데이터를 저장하고 관리합니다. 여러 브로커가 클러스터로 구성됩니다.

 

Topic: 데이터를 카테고리별로 구분하는 단위. 한개의 토픽은 한개 이상의 파티션으로 나뉩니다.

  • 메세지를 저장하는 단위가 토픽이라고 한다.
  • 메세지를 구분하는 용도로 사용을 함.
  • 파일시스템의 폴더나 메일함과 유사한 개념
  • 한개의 토픽은 한개 이상의 파티션으로 구성 된다.
  • 토픽을 기준으로 producer와 consumer 가 메세지를 주고 받음.

Partition: 메세지를 저장하는 물리적인 파일을 의미함

  • 토픽의 세그먼트로, 각 파티션은 순서가 보장되는 레코드의 시퀀스를 가집니다.

 

 ** Partition 과 Offset, 메시지 순서

  • Partition 은 append-only 파일이고 각각의 메시지가 저장 되는 위치를 offset 이라고 한다.
  • Producer 가 카프카에 메시지를 저장하면 저장된 메시지들은 차례대로 offset-0, offset-1, offset-2 같은식으로 offset 값을 가지게 된다.
  • 또한, append-only file 이기 때문에 Producer 가 넣은 메시지는 Partition의 맨뒤에 추가가 된다. (중간에 낄 수 없음)
  • Consumer 는 Offset 기준으로 메시지를 순서대로 읽는다. (섞어서 읽지 못함)
  • Partition에 저장된 메시지는 삭제되지 않는다.(파일이기 때문)

 

2. 기능:

   - 높은 처리량: 대용량의 실시간 데이터를 처리할 수 있습니다.
   - 확장성: 브로커 수를 추가하여 쉽게 확장할 수 있습니다.
   - 내구성: 데이터를 디스크에 저장하여 내구성을 보장합니다.
   - 실시간 처리: 실시간으로 데이터를 처리하고 전송할 수 있습니다.


3. 사용 사례:

   - 로그 및 이벤트 수집: 애플리케이션 로그, 사용자 활동 로그 등의 실시간 수집.
   - 데이터 파이프라인: 데이터베이스와 데이터 웨어하우스 간의 실시간 데이터 스트리밍.
   - 실시간 분석: 실시간 데이터 분석 및 모니터링.
   - 메시지 브로커: 애플리케이션 간의 데이터 전송을 위한 메시지 브로커로 사용.