티스토리 뷰
레코드란 ?

- 프로듀서에서 생성된 메시지의 단위
- 프로듀서에서 레코드를 생성 후 브로커로 전송됨
- 레코드는 timestamp, offset, headers, key, value로 이뤄져 있음
- offset과 timestamp는 브로커로 전송되었을 때 지정되어 저장됨
- 브로커에 한번 적재된 레코드는 삭제될 수 없고 리텐션 기간 또는 용량에 따라 삭제됨
timestamp
- 레코드의 타임스템프는 스트림 프로세싱에서 활용하기 위해 시간 저장하는 용도로 사용됨
- ProducerRecord 생성시간이 또는 브로커 적재시간으로도 설정 가능(기본값으로 ProducerRecord 생성시간)
- message.timestamp.type으로 설정 가능
- 토픽 단위로 설정 가능
offset
- 레코드의 오프셋은 프로듀서가 생성한 레코드에 존재하지 X
- 브로커에 적재될 때 오프셋 지정
- 오프셋은 0부터 시작되며 1씩 증가
- 컨슈머는 오프셋을 기반으로 처리가 완료된 데이터와 앞으로 처리해야할 데이터를 구분
- 메시지는 파티션별로 고유한 오프셋을 가지므로 컨슈머에서 중복 처리를 방지하기 위한 목적으로 사용
headers
- 레코드의 스키마 버전이나 포맷과 같이 데이터 프로세싱에 참고할 만한 정보를 담아서 사용
key
- 파티셔닝 : 메시지 키는 처리하고 자하는 메시지 값의 분류하기 위한 용도로 사용
- 파티셔닝에 사용되는 메시지 키는 파티셔너에 따라 토픽의 파티션 번호가 정해짐
- null일 경우 특정 토픽의 파티션에 라운드로빈 방식으로 전달됨
- null이 아닌 경우 메시지 키는 해쉬값에 의해서 특정 파티션에 매핑되어 전달
value
- 실질적으로 처리할 데이터가 담기는 공간
- 메시지 값의 포맷은 제네릭으로 사용자에 의해 지정 (Float, Byte[], String 등)
- 필요에 따라 사용자 지정포맷으로 직렬화/역직렬화 클래스를 만들어 사용할 수 있음
- 브로커에 저장된 레코드의 값은 어떤 포맷인지 알 수 없으며 컨슈머는 미리 역직렬화 포맷을 알고있어야함
출처 : 인프런- 아파치 카프카 애플리케이션 프로그래밍
'IT > Kafka' 카테고리의 다른 글
| [Kafka] 카프카 클러스터 운영하는 여러가지 방법 (0) | 2024.04.29 |
|---|---|
| [Kafka] 카프카 브로커와 클라이언트 통신 (0) | 2024.04.28 |
| [Kafka] 파티션 생성 관련 (0) | 2024.04.27 |
| [Kafka] 카프카 토픽, 파티션, 로그, 세그먼트 (0) | 2024.04.27 |
| [Kafka] ISR (In-Sync-Replicas) (0) | 2024.04.27 |