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

박준형님의 프로필 이미지

작성한 질문수

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

프로듀서 주요 옵션 소개

연결 브로커 지정

작성

·

121

·

수정됨

0

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

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

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

답변 2

0

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

안녕하세요~

프로듀서가 토픽에 레코드를 전송할 때, bootstrap.servers에는 100개 브로커중 아무 브로커 2개만 적어도 됩니다. 왜냐면 최초로 통신을 할 때 meta data를 sync하게 되는데, 이 때 필요한 정보들(리더 파티션이 위치한 브로커의 ip 등)을 가져오기 때문입니다.

bootstrap.servers에는 일반적으로 2개 이상 브로커 정보를 적는 것이 일반적입니다.

0

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

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

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

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