강의

멘토링

로드맵

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

Tommy님의 프로필 이미지
Tommy

작성한 질문수

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

파티셔너(Partitioner)

충분히 큰 파티션 생성시 궁금증이 존재합니다.

작성

·

12

0

메시지 키가 있을 경우 전달되는 파티션이 변경되는 것을 방지하기 위해 충분히 큰 파티션으로 생성을 해야한다.

해당 부분에 대해 궁금한 점이 생겨 질문올립니다.

  1. 여기서의 충분히 큰 파티션은 어떻게 산정을 하면 좋을까요?

  2. Spring Application으로 Consumer를 구현한다고 했을 때, 충분히 큰 파티션 생성 시 Consumer : Kafka Topic = 1 : N
    구조로 구독을 하는 방향으로 만들면 되는 건 지 궁금합니다.

 

답변 1

0

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

충분히 큰 파티션 생성과 관련된 몇 가지 중요한 사항에 대해 안내해 드리겠습니다.

  1. 충분히 큰 파티션 산정:

    • 충분히 큰 파티션이란 메시지 키가 동일한 데이터를 보장할 수 있을 만큼 적절한 개수의 파티션을 의미합니다. 이는 주로 데이터 처리량, 병렬성, 성능 요구사항, 데이터 크기 등을 기준으로 결정됩니다.
    • 예를 들어, 평균적인 메시지 처리량을 기반으로 한 분당 메시지 수와 동시에 처리해야 할 메시지 수를 파악한 후, 필요한 처리량과 성능을 산정하여 파티션 수를 결정할 수 있습니다.
    • 일반적으로 초기 설정 시에는 예측되는 최대 데이터 처리량보다 여유롭게 잡는 것이 좋습니다. 예를 들어, 예상 처리량의 두 배나 그 이상으로 설정하여 향후 증가할 수 있는 데이터를 대비할 수 있습니다.
  2. Consumer : Kafka Topic = 1 : N 구조:

    • Spring Application에서 Consumer를 구현할 때, 일반적으로 하나의 Consumer가 여러 파티션을 소비할 수 있는 구조로 설정할 수 있습니다. 여러 Consumer로 병렬 처리를 보장하는 것이 목표입니다.
    • 충분히 큰 파티션을 만들었다면, 데이터는 파티션 간에 균등하게 분산되어 처리됩니다. 파티션이 많다면 각 Consumer는 여러 개의 파티션을 처리할 수 있습니다. 이를 통해 병목현상을 최소화하고, 성능 최적화를 이룰 수 있습니다.
    • Consumer 그룹을 활용하여 각각의 Consumer에게 고르게 작업을 분배할 수 있습니다. 이 경우, 각 Consumer는 특정 파티션의 데이터를 독립적으로 처리하게 됩니다.

관련된 기존 논의들은 아래 링크에서 참고하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Tommy님의 프로필 이미지
Tommy

작성한 질문수

질문하기