[레코드와 파티션]
** 파티션은 데이터가 저장되는 공간이고, 이 데이터가 레코드라고 불립니다.
레코드마다 고유한 타임스탬프, 메시지 키, 메시지 값, 오프셋이 지정되서 파티션에 들어가게 됩니다.
타임스탬프
. 레코드를 생성할 시점이 Unix time으로 들어가게 됨, 브로커에 들어갈 시간, 사용자가 설정한 시간도 들어갈 수 있음
메시지 키
. 데이터를 구분하는 값 -> 레코드가 들어갈 파티션을 정하거나, 순서를 정할때 사용하기 유용함
. 보통의 경우 메시지 키를 따로 설정하지 않으면 NULL 값으로 들어가게 됨
메시지 값
. 실제로 사용할 데이터. 직렬화 되어 저장됨
오프셋
. 파티션에 저장될 때 레코드 별로 저장되는 번호
. 한 개의 파티션에는 오프셋이 중복될 수 없음
[토픽과 파티션]
** 토픽은 파티션들의 묶음으로, 한 개의 토픽은 일반적인 DB의 Table과 유사한 개념입니다.
토픽의 파티션에 저장된 데이터는 브로커가 데이터를 지우기 전까지는 삭제되지 않습니다.
토픽은 파티션을 한 개 이상 가져야 합니다. 그리고 파티션 개수가 많아질 수록 병렬 처리량을 늘릴 수 있습니다.
-> 컨슈머 그룹을 통해서 파티션 개수가 많을수록 병렬로 처리되는 데이터량, 시간당 처리되는 데이터량을 늘릴 수 있음
토픽 이름은 영대소문자, 숫자, 점, 언더바, 대시로 만들 수 있습니다.
[파티션 개수의 변경]
** 토픽에 있는 파티션 개수를 변경할 수(늘릴 수) 있음
데이터 처리량을 늘리고 싶을 때, 파티션 개수를 늘려서 처리할 수 있습니다.
-> 파티션 개수만큼 컨슈머 그룹을 늘릴 수 있기 때문
단, 이미 가지고 있는 파티션을 줄이는 것은 불가능합니다.
[토픽의 데이터 삭제]
** 토픽(파티션)에 저장된 데이터는 개별 삭제가 불가능합니다.
** 데이터의 삭제는 브로커가 관장하며, 토픽 단위로 데이터가 삭제되는 시점을 정할 수 있습니다.
각각의 레코드를 로그(Log)로 보기 때문에, insert/update가 불가능합니다.
데이터 삭제는 아래와 같이 2가지 옵션이 있습니다.
. cleanup.policy = delete (데이터 레코드의 삭제)
- retention.ms : 얼마정도 시간이 지나고 나면 삭제 처리
- retentions.bytes : 얼마정도 데이터가 차고 나면 삭제 처리
. cleanup.policy = compact (메시지 키 단위로 이전의 데이터를 삭제)
- 주로 스트리밍 애플리케이션을 만들 때 사용
'~2022 > Apache Kafka' 카테고리의 다른 글
[Apache Kafka] 6. 카프카 클러스터 (0) | 2021.11.11 |
---|---|
[Apache Kafka] 5. 카프카 브로커 (0) | 2021.11.11 |
[Apache Kafka] 4. 의미 있는 토픽 이름 작명 방법 (0) | 2021.11.11 |
[Apache Kafka] 2. 카프카의 특징, 장점(데이터 파이프라인에 적합한 이유) (0) | 2021.10.28 |
[Apache Kafka] 1. 카프카의 탄생 (0) | 2021.10.28 |