작성
·
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() 메소드 관련 내용에 대해 설명하고 있습니다.
아래 링크를 클릭하시면 강사님이 직접 해주신 자세한 답변을 확인하실 수 있습니다.
위 링크에서 배치 단위의 메시지 처리와 관련된 내용을 확인하시면, 강의 장표에 표시된 내용에 대한 이해에 도움이 될 것입니다.
이후에 배울 내용으로 설명이 되는거였네요. 친절한 답변 감사합니다!!