강의
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 |