강의

멘토링

로드맵

Inflearn brand logo image

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

HAHA님의 프로필 이미지
HAHA

작성한 질문수

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

Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해

consumer 설정 질문

해결된 질문

작성

·

15

0

안녕하세요.

Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해 강의 5:03에서 망냑 파티셩니 10개 있으면 최대 10MB 가져올 수 있따

이렇게 말씀하셨는데

컨슈머를 띄울 때 파티션별로 각 서버마다 따로 뜨게 하시는지

한 컨슈머 서버에 여러 파티션을 구독하게 띄우시는지 궁금합니다.

 

이를 설정하는 기준이 있으신지도 궁금합니다.

 

제가 카프카를 처음 공부하고 있어서 혹시 질문이 잘못되었다면 알려주시면 감사하겠습니다.

 

감사합니다.

답변 2

1

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

안녕하십니까,

제가 질문을 잘 이해하지 못했습니다. 먼저 질문 중

=>

이렇게 말씀하셨는데

컨슈머를 띄울 때 파티션별로 각 서버마다 따로 뜨게 하시는지

한 컨슈머 서버에 여러 파티션을 구독하게 띄우시는지 궁금합니다.

=================

에서 서버와 컨슈머 서버가 어떤 것을 의미하는 지요? Kafka에서 Consumer 는 Client입니다. 그리고 broker는 서버입니다. 즉 consumer client 가 broker 서버에 접속해서 데이터를 읽어 들이는 구조 입니다. 다시 한번 질문 확인 부탁드립니다.

 

감사합니다.

HAHA님의 프로필 이미지
HAHA
질문자

죄송합니다. 질문을 다시 명확하게 정리해보겠습니다.

Producer -> Broker -> Consumer

이렇게 구조로 되어 있을 때 Consumer를 구현하여 서버로 띄워 놓는 것을 Consumer 서버이고,

Producer는 일반적으로 API 서버에서 이벤트를 발행할 것이라 생각했습니다.

 

이때 Topic 파티션이 4개가 있고 Consumer가 4개 존재한다고 생각해보겠습니다.

 

EC2인스턴스에 Consumer 서버를 띄운다고 했을 때,

  1. 인스턴스 4개 띄우고 Consumer 각각 할당해 인스턴스와 Consumer 1:1과 파티션과도 1:1로 맞춘다

  2. 인스턴스 1개 띄우고 컨슈머 4개 띄운다.(subscribe와 poll 메서드를 만들고 메인 함수에서 스레드 4개 돌려서 한 인스턴스에서 4개 컨슈머 띄워서 4개 파티션을 한 서버에서 처리)

1이거나 혹은 1번이 아닌 방법으로 Consumer 서버를 띄울 것 같은데, 어떤 기준으로 선택하시는지 궁금합니다.

 

혹시 질문이 이해가 가지 않으셨다면, 말씀해주시면 제가 좀 더 정리해보겠습니다.

감사합니다.

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

Consumer 서버의 의미가 그런것이었군요 ^^

다만 consumer 서버라는 단어는 잘 사용하지 않아서 이렇게 용어를 정리하면 어떨까 싶습니다.

Consumer Client: 하나의 Consumer Process를 기동 시키는 Client 프로그램 또는 Process

EC2 인스턴스: Consumer Client 를 기동시키는 인스턴스

보통은 4개의 Partition을 가지는 Topic를 위해 Consumer 를 4개를 띄운다면 하나의 EC2 인스턴스에서 4개의 Consumer Client 프로그램(예를 들어 Java 프로그램 또는 Process)을 띄웁니다.

Consumer는 Thread Safe하지 않아서 보통은 Thread를 사용하지 않고 개별 Process로 각각 구동합니다. Thread를 사용하지 못하는 건 아닌데, 권장되지 않고, 방법이 좀 복잡합니다

인스턴스 4개 띄우고 각 인스턴스별 Consumer를 띄울 수는 있는데, 서버 자원 낭비일 수 있을 것 같습니다. 다만 단일 인스턴스에서 I/O 용량등이 부족하다면 여러 인스턴스에서 Consumer 구동을 고려 해볼 수도 있습니다.

 

 

0

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

HAHA님께서 Consumer 설정에 대해 질문해 주셨네요. 카프카에서는 Consumer 그룹의 설정에 따라 하나의 Consumer 인스턴스가 여러 파티션을 소비할 수 있습니다. 이러한 설정은 주로 성능과 구독 패턴에 따라 조정하게 됩니다.

  1. Consumer의 파티션 할당:

    • 한 Consumer 그룹 내에 여러 Consumer가 있고, Kafka가 자동으로 각 Consumer에게 파티션을 할당해줍니다. 기본적으로 파티션의 수보다 Consumer의 수가 적으면 한 Consumer가 다수의 파티션을 소비하게 됩니다.
    • 이와 반대로, 파티션의 수가 Consumer의 수보다 많으면, Consumer가 각기 다른 파티션을 할당받게 됩니다. 즉, 가능한 최대의 병렬 처리를 통해 데이터를 처리할 수 있게 됩니다.
  2. 파티션 할당 관리:

    • 파티션 할당의 경우, Kafka의 ‘파티션 할당 관리자’가 자동으로 처리하지만, 직접적으로 컨트롤 하려면 특정 Consumer에 특정 파티션을 할당할 수도 있습니다. 이는 주로 데이터의 일관성을 유지하고자 할 때 사용됩니다.
  3. 설정 기준:

    • 데이터 처리량: 데이터 처리가 큰 경우, Consumer의 수를 늘려 각 Consumer가 더 적은 파티션을 처리하도록 설정합니다.
    • 데이터 중요도 및 복잡성: 한 Consumer 인스턴스가 더 적은 파티션을, 중요하거나 복잡도가 높은 데이터를 소비하도록 설정할 수 있습니다.

카프카의 Consumer 설정은 시스템 요구사항과 사용 패턴에 맞춰 유연하게 구성할 수 있습니다. 처음 공부하시는 경우 다양한 설정을 시도해보시면서 성능과 데이터 처리의 차이를 체험해 보시는 것도 좋은 방법입니다.

KYR님의 질문에 대해 더 많은 정보를 참고할 수 있도록 몇 가지 관련 링크를 제공드립니다:

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

HAHA님의 프로필 이미지
HAHA

작성한 질문수

질문하기