티스토리 뷰
토픽 생성 시 파티션이 배치되는 방법
round-robin 방식으로 리더 파티션 생성
- 파티션이 5개인 토픽을 생성했을 경우 round-robin 방식으로 브로커마다 리더 파티션이 생성됨
- 카프카 클라이언트는 리더 파티션이랑 통신하므로 브로커별로 골고루 통신하게 되는 셈
- 로드벨런싱
- 팔로워 파티션은 리더파티션 생성된 다음 브로커에 순차적으로 생성됨
특정 브로커에 파티션이 몰리는 현상
- kafka-reassign-partition.sh 명령어로 파티션 재분배 가능
파티션 개수와 컨슈머 개수의 처리량
- 파티션은 카프카 병렬처리의 핵심으로 그룹으로 묶인 컨슈머들이 레코드를 병렬로 처리할 수 있도록 매칭됨
- 파티션과 컨슈머의 관계는 1:1
- 컨슈머의 처리량이 한정된 상황에서 처리량을 높이려면 컨슈머 개수를 늘려 스케일 아웃하고 파티션 개수도 늘려야함
- 특정 컨슈머에 장애가 발생하면 여러개의 파티션 할당이 가능
- 프로듀서가 초당 10개의 데이터를 생성한다고 하면 최소 파티션 10개 컨슈머 10개를 생성해야하며, 넉넉하개 20개씩 생성해두는게 좋음
파티션 개수를 줄이는 것은 불가능
- 카프카에서 이미 생성된 파티션을 줄이는 것은 불가능.토픽을 재생성하는 방법밖에 없음
- 파티션의 데이터는 세그먼트로 저장하고 있기 때문에 여러 브로커에 저장된 데이터를 취합하고 정렬해야하는 복잡한 과정이 필요함
- 파티션을 늘리는건 신중해야함
'IT > Kafka' 카테고리의 다른 글
[Kafka] 카프카 브로커와 클라이언트 통신 (0) | 2024.04.28 |
---|---|
[Kafka] 레코드 (0) | 2024.04.27 |
[Kafka] 카프카 토픽, 파티션, 로그, 세그먼트 (0) | 2024.04.27 |
[Kafka] ISR (In-Sync-Replicas) (0) | 2024.04.27 |
[Kafka] 카프카 기본개념 - 세그먼트와 삭제 주기 관련 (0) | 2024.04.27 |