카프카에서 세그먼트(Segment)와 레코드(Record)
2024. 11. 27. 19:56ㆍDATA/Kafka
반응형
카프카에서 세그먼트(Segment)와 레코
드(Record)는 중요한 개념이다. 카프카에서 레코드는 메시지의 기본 단위이며, 이를 통해 데이터가 프로듀서에서 컨슈머로 전송된다. 레코드는 다양한 구성 요소를 포함하고 있으며, 이러한 구성 요소는 카프카에서 데이터가 어떻게 저장되고 처리되는지에 중요한 역할을 한다.
레코드(Record)의 구성
- Key (선택적)
- Key는 레코드를 파티셔닝할 때 사용된다. 특정 레코드를 특정 파티션으로 보내기 위해 파티션 키를 설정할 수 있다.
- , CustomerID나 OrderID와 같은 값을 Key로 사용하여 특정 레코드를 항상 동일한 파티션에 보내도록 할 수 있다.
- Key는 Optional로 설정할 수 있으며, Null 값일 수도 있다.
- Value
- Value는 실제 데이터가 저장되는 부분으로, 카프카에서 중요한 내용이 들어간다. , JSON 형식으로 직렬화된 메시지나 문자열, 바이트 배열 등 다양한 데이터 유형이 포함될 수 있다.
- 카프카에서는 데이터를 직렬화하여 Value에 저장하고, 이를 전송한다. 직렬화와 역직렬화 과정에서 어떤 포맷을 사용할지 미리 정해두어야 하며, 컨슈머는 이 포맷을 알고 있어야 역직렬화가 가능하다.
- Headers
- Headers는 메시지에 대한 메타데이터를 담을 수 있는 부분이다. , 메시지가 생성된 시간, 메시지의 버전, 또는 특정한 처리 정보를 헤더로 포함할 수 있다.
- Headers는 Key-Value 형태로 여러 개가 포함될 수 있으며, 추가적인 정보나 상태를 전달하는 용도로 사용된다.
- Timestamp
- Timestamp는 레코드가 생성된 시간을 나타낸다. 이 값은 Optional로 설정할 수 있으며, 메시지의 정확한 생성 시간을 기록하는 데 사용된다.
- 카프카에서는 기본적으로 메시지를 생성한 시간 외에도 레코드가 디스크에 기록된 시간을 포함할 수 있다. 카프카에서는 다양한 방식으로 타임스탬프를 설정할 수 있다.
- Offset
- Offset은 카프카의 각 파티션 내에서 메시지의 고유한 위치를 나타낸다. 각 메시지는 해당 파티션에서 유일한 오프셋을 가진다. 이 오프셋을 통해 카프카는 메시지의 순서를 관리하고, 컨슈머가 어디에서부터 데이터를 읽어야 할지 추적할 수 있다.
레코드 직렬화 및 역직렬화
- 직렬화(Serialization)는 데이터를 바이트 배열로 변환하는 과정이며, 역직렬화(Deserialization)는 이를 다시 원래 형태로 변환하는 과정이다.
- 카프카에서는 직렬화와 역직렬화 방식에 대해 특별히 정의하지 않기 때문에, 이를 처리하는 방식은 주로 개발자가 선택한다.
- 보통 String 형식이나 JSON 포맷을 사용하는 경우가 많다. JSON 포맷은 직관적이고 읽기 쉬운 형식이기 때문에 데이터를 쉽게 처리하고 분석할 수 있다.
- 다른 포맷으로는 Avro, Protocol Buffers, Thrift 등이 있으며, 이들은 이진 데이터 형식으로 데이터를 더 압축하여 처리할 수 있다.
요약
- Key: 파티셔닝에 사용되는 선택적 필드
- Value: 실제 데이터가 들어가는 필드, 다양한 데이터 형식(문자열, JSON 등) 가능
- Headers: 메타데이터를 담는 키-값 쌍
- Timestamp: 레코드 생성 시간 (Optional)
- Offset: 메시지의 고유한 위치 (파티션 내에서)
레코드는 카프카에서 데이터를 주고받는 기본 단위로, 데이터를 효율적이고 유연하게 처리할 수 있도록 다양한 기능을 제공한다.
반응형
'DATA > Kafka' 카테고리의 다른 글
카프카 프로듀서 (0) | 2024.11.27 |
---|---|
ISR (In Sync Replica) (0) | 2024.11.27 |
카프카의 주요 개념: 이벤트, 스트림, 토픽 (0) | 2024.11.27 |
Zookeeper 및 부분 실패(Partial Failure) (0) | 2024.11.27 |
Kafka의 프로듀서(Producer) | 카프카 데이터 복제 (Replication) |컨트롤러와 코디네이터 (0) | 2024.11.27 |