Kafka Partition 수량 결정 - jupark33/Spring GitHub Wiki

Kafka Definitive Guide
Chapter 2

파티션 수량 결정 방법

  • 해당 토픽의 성능 목표치를 결정한다. 예를들어 초당 100KB 혹은 초당 1GB 인가?
  • 단일 파티션을 컨슈밍할 때 목표로 하는 최대 성능 값을 상정한다. 가장 느린 컨슈머가 데이터베이스에 데이터를 기록하는 성능이 최대 초당 50MB라면 컨슈머는 초당 60MB 의 성능으로 제한된다.
  • 동일한 방법으로 프로듀서의 성능을 측정해볼 수 있지만 일반적으로 프로듀서는 컨슈머 보다 훨씬 빠르기 때문에 프로듀서 성능 측정은 보통 건너 뛰어도 된다.
  • 키 기반으로 파티션에 메시지를 보내고 있다면, 나중에 파티션을 추가하는 것은 아주 어려울 수 있으므로 현재 사용량이 아닌 미래의 사용량을 예측해야 한다.
  • 각 브로커에 배치할 파티션 수와 디스크 여유 공간 네트워크 대역폭을 고려해야 한다.
  • 각 파티션은 브로커의 메모리 및 다른 자원들을 사용하게 되며 이는 리더 선출 시간을 증가시키므로 과도하게 예측하면 안된다.

종합적으로 파티션 수가 너무 많으면 안된다.

하나의 토픽에서 초당 1GB를 읽고 쓰고 싶다면, 필자는 각 컨슈머가 초당 50MB를 처리할 수 있다고 알고 있으므로 최소 20개의 파티션이 필요한 것을 알수 있다.

만약 이러한 세부 사항을 모른다면, 필자의 경험 상 제안한다면, 해당 디스크 내의 파티션의 사이즈는 하루에 6GB 보다 적게 유지 한다면 만족할 만한 결과를 얻을 수 있을 것으로 생각한다.