티스토리 뷰
Broker의 설정 파일(server.properties)에 log.dirs 파라미터를 통해 Segment File이 생성되는 위치를 조정할 수 있다. (콤마를 통해 여러 디렉토리 설정 가능) 만약 topic1이라는 이름의 Topic과 Partition 0번이 있다고 가정하면, log.dirs에 명시된 위치 중 하나가 결정되고 그 하위 디렉토리에 "Topic명-Partition번호"(topic1-0) 형태의 하위 디렉토리가 생성되며 해당 디렉토리에 Segement File이 기록된다.
Log File들의 확장자와 파일명에는 의미가 있다.
예를들어 위와 같이 00000000000000000217.* 이라는 파일명이 있으면 해당 파일은 00000000000000000217 offset부터 기록하고 있는 Segment File임을 의미한다. Segment file이 롤링될 때 해당 위치부터 끊어진 것으로 간주하면 된다. 그러다가 00000000000000004411.* 파일이 생성되었으므로 00000000000000000217 파일에는 00000000000000000217부터 00000000000000004410 까지의 Offset에 해당하는 메시지가 기록되어 있을 것이다.
Partition 디렉토리에 기본적으로 생성되는 파일 확장자
- .log : Log Segment File로 실제 전송되는 메시지와 메타데이터를 저장한다.
- .Index : Index File로 각 메시지의 Offset을 Log Segment 파일의 Byte 위치를 기록한다.
- .timeindex : 메시지의 timestamp를 기반으로 메시지를 검색할 수 있도록 하기 위해 사용된다.
- leader-epoch-checkpoint : Leader가 변경이 되었을 때의 정보와 Offset 정보를 저장한다.
특수한 경우에 생성되는 파일 확장자
- .snapshot : 메시지 순서를 보장하기 위해 사용하는 Idempotent Producer를 사용할 경우
- .txnindex : Transactional Producer를 사용할 경우
Partition은 여러개의 Segment File로 구성된다. (롤링)
- log.segment.bytes (기본값 1GB) : 해당 값 이상이 되면 새로운 Segment File을 생성
- log.roll.ms (기본값 168시간, 7일) : 해당 값 이상이 되면 새로운 Segment File을 생성
- log.index.size.max.bytes (기본값 10MB) : index 파일을 롤링할 단위 설정
* __consumer_offset 토픽은 Rolling 파라미터를 별도로 관리한다.
- offsets.topic.segment.bytes (기본값 100MB)
cf. Checkpoint File
각 Broker에는 2개의 CHeckpoint File이 존재한다. 그중에서도 log.dirs에 명시한 디렉토리에 생성되는 Checkpoint File은 다음과 같다.
1) replication-offset-checkpoint
가장 최근에 Commit된 메시지의 ID인 High Water Mark를 기록한다. 시작할 때 follower가 이를 읽어서 commit 되지 않은 메시지를 삭제한다.(Truncate: 일부삭제)
2) recovery-point-offset-checkpoint
데이터가 디스크로 flush 된 지점을 기록한다. 복구 중에 Broker는 이 시점 이후의 메시지가 손실되었는지를 확인한다.
'[ 맛보기 ] > [ Kafka ]' 카테고리의 다른 글
[kafka] Kafka의 주요 구성 요소 (Broker, Zookeeper) (0) | 2022.06.08 |
---|
- Total
- Today
- Yesterday
- K8s
- 카프카
- RDB
- go
- Stream
- Non-Blocking
- container
- Linux
- db
- rolling update
- GitOps
- argocd
- Controller
- LFCS
- jvm
- Java
- 컨트롤러
- kafka
- docker
- ubuntu
- 우분투
- Kotlin
- github actions
- 코틀린
- 쿠버네티스
- golang
- ci/cd
- Kubernetes
- CICD
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |