데이터 엔지니어링
간단 카프카 정리
haong_
2023. 7. 8. 21:59
하반기 카프카 도입예정이어서 간단히 정리
Zookeeper
- 분산형 애플리케이션을 위한 코디네이션 서비스를 제공하는 오픈 소스 프로젝트
- 카프카에서는 주키퍼를 사용하여 클러스터 상태, 설정 정보, 브로커 정보 등 중요한 메타데이터를 관리하고 저장
- 클러스터 내에서 리더 선택이나 네이밍 서비스, 분산 동기화 등 서비스 제공
- 주키퍼의 의존성 문제 때문에 카프카에서 주키퍼를 떼어내기 위한 작업 진행중
Kafka broker
- 실행된 카프카 애플리케이션 서버 단위
- 실제 메세지를 저장하고 전달하는 역할
- 하나 이상의 브로커로 카프카 클러스터 구성
Topic
- 메세지(데이터) 분류 단위
- 여러개 파티션으로 나누어져 있어 병렬처리 가능
Partition
- 한 파티션 내에서 메시지는 항상 순서대로 저장
- 파티션을 복제하여 다른 브로커에 저장, 장애 발생시 데이터 손실을 방지하고 서비스 가용성 유지
- 파티션은 여러 브로커에 분산하여 저장가능. 클러스터의 스토리지 용량을 최대한 활용할 수 있고, 단일 브로커에 대한 부하를 분산시킬 수 있음
- 리더 파티션 : 카프카 클라이언트와 데이터 주고 받는 역할
- 팔로워 파티션 : 리더 파티션을 지속 복제, 리더 파티션 동작이 불가할 경우 나머지 팔로워중 하나가 리더로 선출됨
Producer & consumer
- 프로듀서는 메시지를 생성하고 해당 메시지를 카프카의 특정 토픽에게 전송
- 컨슈머는 특정 토픽에서 메시지를 가져와서 처리하는 역할
- 하나 이상의 파티션
- 컨슈머는 컨슈머 그룹을 구성 할 수 있으며, 그룹 내의 각 컨슈머는 다른 파티션에서 메시지를 처리함으로써 병렬 처리를 수행 (목적에 따라 컨슈머 그룹 분리해서 운영)
Replication
- 고가용성을 위해 파티션 복제기능으로 데이터 유실 방지
- ISR : 리더+팔로워 파티션의 싱크가 된 묶음 (in-sync replica)
- 레플리케이션이 3개 일때 broker 1 장애 발생시
- 파티션 1에 리더 파티션이 브로커 2 or 브로커 3 중에 새로 할당
- 카프카 클라이언트는 새로운 리더 파티션과 연동