작성
·
130
·
수정됨
답변 2
0
안녕하세요~
프로듀서가 토픽에 레코드를 전송할 때, 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
를 통해 처음에 몇 개의 브로커와만 연결된 후, 클라이언트는 클러스터의 메타데이터를 가져오고 이 메타데이터에는 모든 토픽의 파티션들과 각 파티션의 리더 브로커 정보가 포함되어 있습니다. 이 정보를 바탕으로 클라이언트는 해당 리더 파티션이 위치한 브로커와 직접 통신하게 됩니다.
따라서 클라이언트 입장에서는 리더 파티션이 위치한 브로커를 명시적으로 알 필요 없이, 클러스터와의 초기 통신을 위해 임의의 브로커 몇 개만 지정하면 그 이후의 통신은 카프카가 자동으로 처리합니다.