반응형

Kafka란?

Kafka는 분산 메세지 큐로 대용량 데이터를 다루면서도 빠른 데이터 처리가 가능하게 합니다.

 

 

본문의 내용은 데브원영님의 강의 '아파치 카프카 for beginners'를 수강하고 정리한 내용입니다.

ref: https://www.youtube.com/@DevWonYoung

 

출처: https://kafka.apache.org/11/documentation/streams/architecture

Kafka Architecture

  1. Kafa Producer API (source application) : click log, … logs 데이터 생성, 및 Topic에 데이터를 저장 (push)
  2. Kafka Cluster(a.k.a Topic) : message 저장소 (핵심 역할)
  3. Kafka Consumer API (target application) : Topic에 저장된 데이터를 읽음(pop). 로그 적재, 로그 처리
    • etc) Kafka Streams API, Kafka Connect API 

 

Apache Kafka Features

Topic & Partition

  • Topic: 데이터가 저장되는 공간
    • 여러 개 생성 가능: 각 log별로 나눠서 저장 (message를 구분하는 용도)
  • Partition: topic의 실제 저장 공간 단위
    • que 역할: Producer에서 들어온 데이터는 partition에 쌓이게 되고 Consumer에서 가장 오래된 데이터부터 가져감
      • 단, 데이터가 partiton에서 사라지지 않고 그대로 보관됨
      • (message가 저장되는 최대 시간과 크기를 지정할 수 있음)
    • partition 여러 개 생성 가능 (=병렬처리 가능)
      • 다중 partition의 경우 기본 저장 방법: 라운드 로빈
      • 단, partition은 늘릴 수 있지만 줄일 수는 없음
    • Offset: 메세지를 어디까지 넣었는지, 읽었는지 저장하는 값 (위치)
  • Partitioner: Producer가 데이터를 보내면 partitioner를 통해 topic의 partition으로 데이터가 전송됨, partitioner는 데이터를 어떤 partition에 넣을지 결정하는 역할을 함
    • message key(hash)를 통해서 위치를 결정할 수 있음
    • 하나의 컨슈머는 하나의 파티션만 연결 (Consumer 1: Partition1), 하나의 컨슈머 기준으로 파티션의 순서 보장
  • Lag: 모니터링 지표 중 하나
    • Consumer가 마지막으로 읽은 offset과 Producer가 마지막으로 넣은 offset의 Gap (여러 개 존재 가능)

 

Broker, Replication, ISR

  • Broker: 카프카가 설치되어있는 서버 단위 (3개 이상을 권장)
  • replication(핵심!): 서버의 이슈에 대비하여 데이터가 유실되는 것을 방지하고 복구하기 위해 복제본을 다른 broker에 저장해 둠 (=고가용성)
    • 최대 broker 개수만큼 지정할 수 있음
    • replication이 1인 경우, broker 중 1대에 partition의 정보가 저장됨
    • replication이 2인 경우, partition 정보가 원본 1개, 복제본 1개가 각각 2대의 broker에 저장됨
  • ISR(In Sync Replica): **** 원본(leader)과 복제본(follower)을 합쳐서 부르는 용어
  • Producerack 동작: partition에 새로운 데이터를 저장할 때 리더 데이터의 업데이트와 팔로워 데이터의 복제가 정상적으로 되었는지 확인하는 방법 (option: 0, 1, all)

 

Zookeeper

: 분산처리 관리 시스템

  • Kafka 관련 정보를 저장하는 역할
  • Kafka의 Broker를 관리(유지보수, 조정)할 수 있음
  • Apache Kafka에서 Zookeeper가 단계적으로 제거되는 중…

 

Consumer, Producer

여기서 자세히 다루지 않음. 더 궁금하신 분들은 아래의 두 동영상을 추천합니다!

 

장점

  • High throughput message capacity
  • Scalability & Fault tolerant : Broker, Partition, Consumer 등 구성요소를 쉽게 추가할 수 있음
  • Undeleted log

 

설치, 실행하기

 

활용 예시

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

반응형

+ Recent posts