DevBoi

[Kafka] 브로커의 역할 본문

Develop/[Kafka]

[Kafka] 브로커의 역할

HiSmith 2023. 7. 20. 00:38
반응형

데이터의 저장

카프카를 실행할때 Config/server.properties 의 log.dir 옵션에 정의한 디렉토리에 데이터를 저장한다.

토픽 이름과 파티션 번호의 조합으로 하위 디렉토리를 생성하여 데이터를 저장한다.

-hello.kafaka 토픽의 0번 파티션에 존재하는 데이터를 확인 할 수 있다.

log에는 메시지와 메타데이터를 저장한다.

index는 메시지의 오프셋을 인덱싱한 정보를 담은 파일이다.

timeindex파일에는 메시지에 포함된 타임스탬프 값을 기준으로 인덱싱한 정보가 담겨있다.

만약에 3개짜리 파티션을 만들게 되면, 해당 토픽이 3개로 저장된다.(나눠서가 아닌 복제형태로)

프로듀서는 메시지 (레코드)를 보내게 되는데

이 레코드 안에는 타임스탬프,메시지키,메시지 값 들의 정보가 들어가있다.

정리하면, log.dir 옵션에서 정의한 디렉토리에 토픽이름 + 파티션 번호의 조합으로 하위 디렉토리를 생성하여 데이터를 저정한다.

 

 

로그와 세그먼트

파일시스템을 나눠서 저장된다.

나뉘는 기준은 bytes도 있고, 시간도 있다.
bytes는 저장 최대 세그먼트 크기 지정, 기본값은 1기가다.(log.segment.bytes)

시간에 대한 기준으로 하게 되면 세그먼트가 신규생성된 이후 다음 파일로 넘어가는 시간 주기 기본값은 7일(log.roll.ms)

 

해당 과 같은 형태에서는 레코드가 22개가 들어간다.

레코드는 추가 될수록 뒤에 붙는다. offset의 처음 값이 로그파일의 이름이 된다. 10.log, 20.log 와 같이

따라서 해당 로그파일로, 오프셋의 시작점을 알 수 있다.

 

액티브 세그먼트는  현재 쓰기가 진행되고 있는 세그먼트다.

이는 삭제 대상에 포함되지 않는다. 

반응형

'Develop > [Kafka]' 카테고리의 다른 글

[Kafka] Replica  (0) 2023.07.20
[Kafka] 세그먼트와 삭제 주기  (0) 2023.07.20
[Kafka] Broker의 역할  (0) 2023.07.18
[Kafka]주키퍼 앙상블  (0) 2023.07.18
[Kafka] 브로커와 클러스터  (0) 2023.07.18