데브코스 TIL/빅데이터, 스트리밍 데이터 처리

Kafka 소개

예니ㅣ 2024. 1. 24. 11:43

강의

Kafka 역사

  • 2008년 탄생 : LinkedIn 내부 실시간 데이터 처리
  • 2011년 오픈소스화 : Apache
  • 2014년 Confluent 창업
  • 2021년 나스닥 상장

 


Kafka

"Kafka"는 실시간 데이터를 처리하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼 입니다.

  • 데이터 재생이 가능한 분산 커밋 로그 (Distributed Commit Log)
  • Publish-Subscription (Producer-Consumer) Massaging System : 생산자 및 소비자 독립적으로 작업 가능
  • Immutable
  • High Throughput Low Latency : 사내 내부 데이터 버스 사용 가능
  • Scale Out
  • 정해진 보유기한(retention period)동안 메시지 저장 : 소비자 오프라인 상태일 때 내구성 및 내결함성 보장
  • 하나의 파티션 내의 메세지 순서 보장

 

장점

  • 스트림 처리
  • High Throughput (처리량)
  • Fault Tolerance (내결함성)
  • Scalability (확장성)
  • 풍부한 생태계 존재

 


Kafka 구조

Kafka 구조

Producer가 하나의 Topic을 다수의 Partition으로 나누어 저장 합니다.

  • Key 있는 경우 : Hashing 값을 Partition의 수로 나눈 나머지
  • Key 없는 경우 : 라운드 로빈
  • 커스텀 Partition 로직 구현

 

"Replication Partition"은 Fail-over를 위해 각 Partition에 하나씩 존재합니다.

Partition별 Consistency Level을 설정할 수 있습니다.

  • Leader : 쓰기 및 읽기
  • Follower : 읽기

 

Message(Event) 구조

  • Header : 선택적 구성 요소. 경량 메타 데이터 정보 (key-value pairs)
  • Key : Partitioning에 이용
  • Value
  • Timestamp : 데이터 추가 시점

 

Topic

"Topic"은 시간 기준으로 정렬된 데이터 이벤트 스트림 입니다.

  • 사용자
    • Producer : Topic 생성
    • Consumer : Topic 읽기 혹은 새로운 Topic 재생성
  • Append Only
  • Immutable
  • 데이터 번호(offset)

 

Topic 파라미터

  • 이름
  • Partition 수
  • 복제본 tn
  • Consistency Level
  • 데이터 보존 기한 : 기본 일주일
  • 메세지 압축 방식

 

Broker

"Broker"는 Kafka 클러스터의 실제 데이터를 저장하는 다수의 서버 입니다.

Kafka Server 혹은 Kafka Node라고 부릅니다.

  • Message를 다수의 Partition에 분산 저장
  • Topic 및 Partition 관리
  • Producer/Consumer 통신 수행
  • 물리서버 혹은 가상서버(VM) 위에서 동작
  • Broker의 수가 Scale Out에 직접 영향

 

메타 정보 관리

메타 정보를 관리하기 위해 Controller 역할에 "Zookeeper" 혹은 "KRaft"를 사용합니다.

  • Broker 리스트 관리 (Broker Membership)
    • Controller Election
  • Topic 리스트 관리 (Topic Configuration)
    • Partition 관리
    • Partition별 Replica 관리
  • Topic별 ACL(Access Control Lists) 관리
  • Quota 관리

 

'데브코스 TIL > 빅데이터, 스트리밍 데이터 처리' 카테고리의 다른 글

Serialization & Deserialization  (0) 2024.01.24
Commit Log  (0) 2024.01.24
Lambda Architecture  (0) 2024.01.22
스트리밍 데이터 처리 소개  (0) 2024.01.22
데이터 처리 변천  (1) 2024.01.22