목차
[INTRO]
기본적으로 Kafka에서는 active_connection_count라는 메트릭지표로 현재 사용 중인 Connection 수에 대한 지표를 제공한다. 하지만 실제 클라이언트 인스턴스 수 보다 이 값이 높은 경우가 있다고 한다.
TCP Connection 수에 대한 정리.
librdkafka에 Connection에 대한 내용이 정리되어 있다.
librdkafka/INTRODUCTION.md at master · confluentinc/librdkafka · GitHub
[Connections]
브로커에서 필요한 Connection은 아래와 같다.
- Consuming 되는 파티션의 리더
- Producing 되는 파티션의 리더
- Consumer group 코디네이터
- Admin API 작업을 위한 Controller
만약 브로커 연결이 없는 상태에서 메타데이터 검색을 위한 요청이 들어온 경우 클라이언트는 유휴 브로커를 통해 메타데이터 정보를 가져간다고 한다.
이미 브로커 연결이 있는 경우 random하게 Connection을 맺는다고 한다.
random connection을 맺는 경우는 아래와 같다.
- bootstrap 서버 구성
- 브로커 추가
- consumer group coordinator 검색
- Idempotence Producer에 대한 Producer ID획득
- 클러스터또는 토픽의 config 변경
random connection의 경우 일회성 쿼리에는 적절하지만 계속해서 연결을 유지해야할 필요가 있다.
아래와 같은 경우에는 Connection을 계속 유지하여 사용하도록 한다고 한다.
- Consumer의 group coordinator
- Consumer의 Consuming동작
- Producer의 Producing 동작
Connection이 닫히는 경우는 여러 요소가 있다.
- 네트워크 오류
- 시간 초과
- connections.max.idle.ms (기본10분) 초과한 클라이언트
[Connection 수 계산식]
Connection수를 계산할 수 있는 대략적인 계산식이 있다고 한다.
Broker당 2000개 정도의 Connection이면 원활한 수준이라고 한다. (2만개까지도 가능은 하다고 함)
계산식 | 비고 | |
Producer | # of partitions * # of producers (토픽당) | |
Consumer | (# of Consumer Group * Broker + # of Consumer Group) * n | n: the number of consumer of consumer group B: the number of Brokers |
'Kafka > Broker' 카테고리의 다른 글
Topic Naming Convention (0) | 2023.05.29 |
---|---|
Kafka Cluster의 성능과 고려요소들 (0) | 2023.04.23 |
Broker 내부 구조 (0) | 2023.04.16 |
Data Mount 경로가 여러 개 일때 용량많은 파티션 이동 시키기 (0) | 2022.11.02 |