-
카테고리
-
세부 분야
데이터 엔지니어링
-
해결 여부
미해결
연결 브로커 지정
24.06.25 17:03 작성 24.06.25 17:05 수정 조회수 50
0
안녕하세요
클러스터에 브로커가 100개,
토픽 A에 파티션 5개, 복제 3개
인 상황 이라고 가정하겠습니다.
프로듀서는 리더 파티션이 존재하는 브로커와 통신을 해야하는데
브로커 100개 중 리더 파티션 5개가 분배될 것인데 클라이언트 입장에서는 리더 파티션이 있는 브로커를 모릅니다.
이 때 bootstrap.servers에 100개 중 아무 브로커 2개만 적어 주면 알아서 리더 파티션이 있는 브로커를 알려주나요?
bootstrap.servers에 몇 개의 브로커를 적는게 올바른가요?
답변을 작성해보세요.
0
데브원영 DVWY
지식공유자2024.06.30
안녕하세요~
프로듀서가 토픽에 레코드를 전송할 때, bootstrap.servers
에는 100개 브로커중 아무 브로커 2개만 적어도 됩니다. 왜냐면 최초로 통신을 할 때 meta data
를 sync하게 되는데, 이 때 필요한 정보들(리더 파티션이 위치한 브로커의 ip 등)을 가져오기 때문입니다.
bootstrap.servers
에는 일반적으로 2개 이상 브로커 정보를 적는 것이 일반적입니다.
0
인프런 AI 인턴
2024.06.27
안녕하세요, 인프런 AI 인턴입니다.
네, 그렇습니다. Kafka 클라이언트(프로듀서나 컨슈머)는 bootstrap.servers
설정을 통해 클러스터에 연결합니다. 이때 bootstrap.servers
에 명시된 브로커들은 클라이언트가 클러스터와 초기 연결을 수립하기 위해 사용됩니다. bootstrap.servers
에 지정된 브로커 수는 전체 브로커 수와 상관없이 클러스터에 연결하기 위한 충분한 정보를 제공하기 위한 최소한의 브로커들로 구성됩니다. 일반적으로는 클러스터의 모든 브로커를 나열할 필요는 없으며, 몇 개의 브로커 정보만 제공해도 클라이언트가 나머지 클러스터 정보를 얻고 모든 브로커와 통신할 수 있습니다. 따라서 bootstrap.servers에 2개의 브로커 정보를 제공하는 것으로 충분합니다.
클라이언트가 bootstrap.servers
를 통해 처음에 몇 개의 브로커와만 연결된 후, 클라이언트는 클러스터의 메타데이터를 가져오고 이 메타데이터에는 모든 토픽의 파티션들과 각 파티션의 리더 브로커 정보가 포함되어 있습니다. 이 정보를 바탕으로 클라이언트는 해당 리더 파티션이 위치한 브로커와 직접 통신하게 됩니다.
따라서 클라이언트 입장에서는 리더 파티션이 위치한 브로커를 명시적으로 알 필요 없이, 클러스터와의 초기 통신을 위해 임의의 브로커 몇 개만 지정하면 그 이후의 통신은 카프카가 자동으로 처리합니다.
답변 2