데이터 엔지니어( 실습 정리 )/kafka
(1) - kafka 개요
세용용용용
2024. 7. 12. 12:32
1. kafka : 분산형 스트리밍 플랫폼, 실시간 데이터 스트림을 처리하고 관리하는 데 사용
(1) 등장 배경

과거는 다양한 source애플리케이션의 데이터가 여러 target서버와 1대1 통신을 하며 데이터를 보내는 방식
- 데이터 파이프라인이 복잡해지고, 각 데이터 유형마다 프로토콜 파편화가 심각해짐
- 즉, 유지보수가 어려워
이런 상황에서 분산 환경으로 데이터를 관리하고 전송할수 있는 중앙관리자인 카프카 개발

(2) topic, producer, consumer
- topic : 메시지(데이터)를 카테고리별로 분류하는 단위
- 메시지 큐 형태로 데이터 관리 : 소스, 타겟 간 직접 통신이 아닌 카프카 브로커의 큐 로 데이터 중개(컨슈머는 큐 에 저장된 순으로 데이터 꺼내감)
- 토픽은 여러 개 생성 가능 ( 파일 시스템 에서 폴더와 같은 역할, 데이터의 주제ㅋㅋ??? )
- 하나의 토픽은 여러 파티션으로 구분 ( 파티션에 큐와 같이 데이터가 쌓임!!)
- 파티션 에서 데이터를 가져가도 데이터는 그대로 존재!!!!! ( 즉, 동일 데이터 여러번 처리 가능)
만약, 파티션이 여러개???!!??
키가 없고 default 파티션시 >>> 데이터는 RR 할당
키가 존재시, 키의 hash값 구하고 데이터는 특정 파티션에 할당하게 됨
파티션 추가시 장단점
장점
- 더 높은 처리량 : 컨슈머에서 병렬처리 가능
- 고 가용성 : 각 파티션은 카프카 브로커에 분산되어 저장
단점
- 관리의 복잡성
- 오버헤드 증가(오버헤드 : 시스템이 동작시 발생하는 부가적인 부담(자원, 동기화 로 인한 지연 등등...)
파티션 데이터 관리
- log.retention .ms : 보존기간( 초 단위) 관리
- log.retention.bytes : 보존크기(바이트 단위) 관리
이외 여러 데이터 관리를 위한 옵션 존재...!!
- producer : 데이터를 토픽에 보내는 역할
데이터 생산자 역할
- topic에 전송할 데이터 생성
- 토픽으로 데이터 전송
- 처리 확인(실패시 재시도....)
[중요 포인트] : 프로듀서는 카프카 클라이언트!!, 즉 카프카 서버(브로커)랑 버전 호환성 존재!!! 모든 버전이 호환하지 않기에 버전을 잘 선택해야됨!!!!!
프로듀서 토픽 데이터 전송(key)
- 카프카는 키 값을 통해 특정 토픽에 데이터 전송 가능(토픽명, 키, 데이터)
- 하지만 파티션을 추가시 일관성이 보장안되므로 RR로 데이터 전송
- 즉, 키를 사용할시 파티션 추가 생성은 고려해봐야됨
- consumer : 토픽에서 데이터를 읽는(처리) 역할