파티션의 수는 줄일 수는 없는 구조이기 때문에 잘 설계하는 것이 중요하다. 다음과 같은 기준에 대해서 고려해보자.

 

달성하고 싶은 처리 속도:

  • 목표치에 맞게 처리 파티션의 수를 정하라는 말임.
  • 그러나 컨슈머 입장에서도 생각해야한다. 컨슈머가 처리하는 속도가 느리다면, 이게 병목이 될 것이기 때문에 이에 맞춰서 설정해야함.
  • 정리하자면 파티션의 수 = 목표 처리량 / 컨슈머의 처리량 로 설정할 수 있다.

메시지 처리 순서 고려:

  • 키 값을 기준으로 선택된 파티션에 대해 메시지를 보내고 있다면 파티션의 수는 미리 늘려놓는 것이 좋을 수 있다.
  • 이는 파티션을 늘렸을 때 메시지 처리 순서에 대한 일관성이 보장되지 않을 수 있기 때문에 말하는 조언임.
  • 키를 기준으로 파티션을 선택하는 내부 알고리즘은 hash(key) % number_of_partitions 이기 때문이다.

하드웨어 리소스 고려:

  • 브로커의 디스크 공간과 IOPS 그리고 네트워크 대역폭 또한 고려해야한다.
  • 클라우드 환경이라면 VM 에 디스크 IOPS 제한이 걸려있는 경우가 있다고 한다.

데이터 미러링에 대한 고려:

  • Kafka MirrorMaker 를 통해 미러링을 사용할 경우 데이터 일관성을 위해 복제에 대한 처리량도 신경써야한다.
  • 미러링을 위한 파티션의 수를 적절하게 늘려주는게 중요함.

+ Recent posts