인프런 커뮤니티 질문&답변

이현준님의 프로필 이미지
이현준

작성한 질문수

카프카 완벽 가이드 - 코어편

Key가 없는 메시지의 파티션 분배전략 - 라운드로빈과 스티키 파티셔닝

Partition에 할당된 Batch Buffer

작성

·

231

·

수정됨

0

안녕하세요

강의 잘 듣고 있습니다.

"Kafka Producer의 send() 메소드 호출 프로세스" 장표에 묘사된 Batch 관련해서 의견 남깁니다.

 

강의 중반부터 나오듯이 각 Batch 버퍼는 Partition과 1대1 대응하도록 되어있는데, 해당 장표에서는 Partition#1 안에 여러개의 배치가 존재할 수 있는 것처럼 되어 있어 혼동이 생길 수 있어 보입니다. Partition#1에 갈 Message는 Batch#1에만 적재되어야하므로 그림 상 P#1 안에는 B#1만 있는 것이 맞지 않을까요?

 

만약 제가 의도와는 다르게 이해한 것이라면, 간략한 설명 덧붙여주시면 감사하겠습니다.

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

말씀하신대로 Producer 내부의 Partitioner 레벨에서는 Topic의 Partition당 1개의 Batch buffer가 할당되는게 맞습니다.

다만 이후 Producer 강의에서 보다 자세히 설명드릴텐데, Partitioner 거쳐서 Record Accumulator에 여러개의 Batch 메시지가 Topic Partition 별로 쌓인 뒤 Kafka Broker 로 보내질 수 있기에 그림이 그렇게 되어 있습니다. 해당 그림은 Record Accumulator 에 누적된 Batch들이라고 보시면 됩니다.

요약드리면 Partitioner가 Topic Partition당 1개의 batch로 작업하게 되면, 바로 Topic으로 보내지 않고 Record Accumulator에 여러 batch들을 임시로 저장한 뒤에 여러 batch들을 한꺼번에 보내게 됩니다.

감사합니다.

이현준님의 프로필 이미지
이현준
질문자

이후에 배울 내용으로 설명이 되는거였네요. 친절한 답변 감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다.

강의를 듣는 중 생긴 강의 내용과 관련된 질문에 대해, 비슷한 질문이 이미 답변되었음을 확인하였습니다.

“메시지 배치 내의 데이터 저장 관련 질문”에 대해 강사님께서 직접 답변을 제공하신 내용이 있으며, 해당 답변에서 메시지 배치의 작동 방식 및 Kafka Producer의 send() 메소드 관련 내용에 대해 설명하고 있습니다.

아래 링크를 클릭하시면 강사님이 직접 해주신 자세한 답변을 확인하실 수 있습니다.

위 링크에서 배치 단위의 메시지 처리와 관련된 내용을 확인하시면, 강의 장표에 표시된 내용에 대한 이해에 도움이 될 것입니다.

이현준님의 프로필 이미지
이현준

작성한 질문수

질문하기