[Kafka] Kafka의 기본 개념

MINJI·2024년 12월 21일
0

📈 빅데이터

목록 보기
7/9

⭐ Kafka 소개

1. Kafka란?

실시간 데이터를 처리하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼

  • Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템
  • High Throughput과 Low Latency 실시간 데이터 처리에 맞게 구현됨
  • 분산 아키텍처를 따르기 때문에 Scale Out이란 형태로 스케일 가능
  • 정해진 보유기한 (retention period) 동안 메시지를 저장

2. 기존 메시징 시스템 및 데이터베이스와의 비교

  • 기존 메시징 시스템과 달리, 메시지를 보유 기간 동안 저장
  • 메시지 생산과 소비를 분리
  • 높은 처리량과 저지연 데이터 스트리밍을 제공
  • 한 파티션 내에서는 메세지 순서를 보장해줌
  • 사내 내부 데이터 버스로 사용되기 시작

3. Eventual Consistency

  • 100대 서버로 구성된 분산 시스템에 레코드를 하나 쓴다면 그 레코드를 바로 읽을 수 있을까?
  • 내가 쓴 레코드를 바로 리턴

vs. Strong Consistency

  • 보통 데이터를 쓸 때 복제가 완료될 때까지 기다리는 구조

4. 주요 기능 및 이점

  • 실시간 스트림 처리
  • Hight Throughput (높은 처리량)
  • Fault Tolerance (내결함성)
  • Scalability (확장성)
  • 풍부한 생태계의 존재
    • 다른 데이터 시스템 및 프레임워크와 쉽게 연동 가능
    • Kafka Connect, Kafka Schema Registry

⭐ Kafka 아키텍처

1. Topic

데이터 이벤트 스트림

  • Producer는 Topic을 만들고 Consumer는 Topic에서 데이터를 읽어들이는 구조
  • 다수의 Consumer가 같은 Topic을 기반으로 읽어들이는 것이 가능

Topic과 Partition

  • 하나의 Topic은 확장성을 위해 다수의 Partition으로 나뉘어 저장됨
  • 메시지가 어느 Partition에 속하는지 결정하는 방식에 키의 유무에 따라 달라짐
  • 하나의 Partition은 Fail-over를 위해 Replication Partition을 가짐
  • 각 Partition별로 Leader와 Follower가 존재
    • 쓰기 : Leader
    • 읽기 : Leader/Follower

Topic의 파라미터

  • 이름
  • Partition의 수
  • 복제본의 수
  • Consistency Level ("acks"): "all"
  • 데이터 보존 기한 : 기본 일주일
  • 메시지 압축 방식
  • ...

2. Message(Event)의 구조

  • Timestamp : 데이터가 Topic에 추가된 시점
  • Key-Value : Topic의 데이터를 나눠서 저장할 때 사용됨 (Partitioning)
  • Header : 선택적 구성요소로 경량 메타 데이터 정보 (Key-Value pairs)

3. Broker

실제 데이터를 저장하는 서버

  • Kafka 클러스터는 기본적으로 다수의 Broker로 구성됨
  • Topic의 Partition들을 실제로 관리해줌
  • 물리서버 or VM 위에서 동작
  • Broker의 수를 늘림으로써 클러스터 용량을 늘림 (Scale Out)

Broker와 Partition

  • Kafka Broker를 Kafka Server or Kafka Node라고 부르기도 함

4. 메타 정보 관리

  • Broker 리스트 관리
  • Topic 리스트 관리
  • Topic별 ACL 관리
  • Quota 관리

0개의 댓글