• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

연결 브로커 지정

24.06.25 17:03 작성 24.06.25 17:05 수정 조회수 40

0

안녕하세요
클러스터에 브로커가 100개,
토픽 A에 파티션 5개, 복제 3개

인 상황 이라고 가정하겠습니다.

프로듀서는 리더 파티션이 존재하는 브로커와 통신을 해야하는데
브로커 100개 중 리더 파티션 5개가 분배될 것인데 클라이언트 입장에서는 리더 파티션이 있는 브로커를 모릅니다.
이 때 bootstrap.servers에 100개 중 아무 브로커 2개만 적어 주면 알아서 리더 파티션이 있는 브로커를 알려주나요?
bootstrap.servers에 몇 개의 브로커를 적는게 올바른가요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.06.27

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

네, 그렇습니다. Kafka 클라이언트(프로듀서나 컨슈머)는 bootstrap.servers 설정을 통해 클러스터에 연결합니다. 이때 bootstrap.servers에 명시된 브로커들은 클라이언트가 클러스터와 초기 연결을 수립하기 위해 사용됩니다. bootstrap.servers에 지정된 브로커 수는 전체 브로커 수와 상관없이 클러스터에 연결하기 위한 충분한 정보를 제공하기 위한 최소한의 브로커들로 구성됩니다. 일반적으로는 클러스터의 모든 브로커를 나열할 필요는 없으며, 몇 개의 브로커 정보만 제공해도 클라이언트가 나머지 클러스터 정보를 얻고 모든 브로커와 통신할 수 있습니다. 따라서 bootstrap.servers에 2개의 브로커 정보를 제공하는 것으로 충분합니다.

클라이언트가 bootstrap.servers를 통해 처음에 몇 개의 브로커와만 연결된 후, 클라이언트는 클러스터의 메타데이터를 가져오고 이 메타데이터에는 모든 토픽의 파티션들과 각 파티션의 리더 브로커 정보가 포함되어 있습니다. 이 정보를 바탕으로 클라이언트는 해당 리더 파티션이 위치한 브로커와 직접 통신하게 됩니다.

따라서 클라이언트 입장에서는 리더 파티션이 위치한 브로커를 명시적으로 알 필요 없이, 클러스터와의 초기 통신을 위해 임의의 브로커 몇 개만 지정하면 그 이후의 통신은 카프카가 자동으로 처리합니다.

채널톡 아이콘