인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

jongmin_lee6님의 프로필 이미지

작성한 질문수

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

토픽과 파티션

파티션 개수와 컨슈머 개수의 처리량 관련 질문

작성

·

62

0

화면 캡처 2025-01-21 170140.png.webp

이 수업 내용에서 하나의 토픽에 여러개의 파티션을 생성 할 수 있고 이 파티션은 하나의 리더 파티션에 다른 broker에 팔로워 파티션을 생성한다고 해주셨던걸로 기억합니다.

또한, producer와 consumer와 소통하는건 리더 파티션만 가능하다고 했는에 위 그림에서는 팔로워 파티션도 컨슈머와 소통가능한 걸로 보여서 헷갈려서 질문드립니다.

 

또한, 리더 파티션만 컨슈머와 소통가능한데 어떻게 병렬 처리가 가능하고 파티션 개수가 늘리면 처리량이 증가하는건지 잘 이해가 가지 않아서요.

 

감사합니다.

답변 2

0

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

안녕하세요.

기본적으로 프로듀서와 컨슈머는 리더 파티션과 통신합니다. 그리고 일반적으로 토픽의 '파티션 개수'라고 불리는 것은 리더 파티션의 개수라고 이해하시면 쉽습니다. 즉, 리더 파티션 개수를 늘리면 병렬적으로 통신할 수 있는 파티션 개수가 늘어나서 처리량이 늘어나는 것입니다.

반면, 팔로워 파티션은 역할자체가 리더 파티션과 다릅니다. 리더 파티션에 들어온 데이터를 지속적으로 복제하고 적재하여 장애에 대비하게 되는 것이 팔로워 파티션입니다. 그렇기 때문에 팔로워 파티션은 리더 파티션이 존재하는 브로커가 아닌 다른 브로커에 저장되는 것이죠.

0

인프런 AI 인턴님의 프로필 이미지

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

Jongmin_lee6님께서 질문하신 카프카의 파티션과 컨슈머의 병렬 처리 기능에 대해 설명드리겠습니다.

카프카에서 리더 파티션은 데이터를 생성(produce)하고 소비(consume)하는 주체로 작동합니다. 즉, 실제 데이터 처리는 리더 파티션을 통해 이루어집니다. 반면에 팔로워 파티션은 리더 파티션의 데이터를 복제하여 데이터 안정성을 높이기 위한 목적으로 사용됩니다. 따라서 컨슈머는 데이터의 최신 버전이 확실히 반영된 리더 파티션과만 직접 소통하여 데이터를 소비하게 됩니다.

파티션과 병렬 처리

카프카의 아키텍처에서 병렬 처리를 가능하게 하는 핵심 요소는 바로 파티션입니다. 예를 들어, 토픽에 여러 개의 파티션을 두고 그에 맞춰 컨슈머를 배치하면 다음과 같은 구조가 됩니다:

  1. 하나의 컨슈머와 하나의 파티션: 컨슈머 하나가 파티션 하나의 데이터를 순차적으로 소비합니다.

  2. 여러 컨슈머와 여러 파티션: 각각의 컨슈머는 각각의 파티션에서 데이터를 병렬로 소비합니다. 이는 물리적으로 독립된 데이터 스트림을 여러 개로 나누어 병렬로 처리하는 것과 같습니다. 실제로는 여러 컨슈머가 여러 리더 파티션과 소통하여 동시에 데이터를 처리할 수 있기에, 파티션을 늘리면 병렬 처리량이 늘어나게 됩니다.

이미지 설명

링크된 이미지에서 나타낸 것처럼, 하나의 토픽에 대해 여러 파티션과 여러 컨슈머를 연결하여 병렬 처리를 수행할 수 있습니다. 위 그림에서도 볼 수 있듯이 두 파티션(파티션 0, 파티션 1) 각각에 컨슈머 하나씩 할당하여, 데이터를 동시다발적으로 소비할 수 있게 됩니다.

이러한 구조 덕분에 카프카는 다양한 시나리오에서 높은 처리량을 제공할 수 있습니다.

추가 참고
- 컨슈머의 파티션 통신 관련된 아래 링크에서 비슷한 질문과 답변을 참고하실 수 있습니다.
- 카프카의 파티션 및 병렬성 관련 내용들은 강의 내 여러 예제를 통해 더 깊이 이해할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.