파티션의 수는 줄일 수는 없는 구조이기 때문에 잘 설계하는 것이 중요하다. 다음과 같은 기준에 대해서 고려해보자.
달성하고 싶은 처리 속도:
- 목표치에 맞게 처리 파티션의 수를 정하라는 말임.
- 그러나 컨슈머 입장에서도 생각해야한다. 컨슈머가 처리하는 속도가 느리다면, 이게 병목이 될 것이기 때문에 이에 맞춰서 설정해야함.
- 정리하자면 파티션의 수 = 목표 처리량 / 컨슈머의 처리량 로 설정할 수 있다.
메시지 처리 순서 고려:
- 키 값을 기준으로 선택된 파티션에 대해 메시지를 보내고 있다면 파티션의 수는 미리 늘려놓는 것이 좋을 수 있다.
- 이는 파티션을 늘렸을 때 메시지 처리 순서에 대한 일관성이 보장되지 않을 수 있기 때문에 말하는 조언임.
- 키를 기준으로 파티션을 선택하는 내부 알고리즘은
hash(key) % number_of_partitions
이기 때문이다.
하드웨어 리소스 고려:
- 브로커의 디스크 공간과 IOPS 그리고 네트워크 대역폭 또한 고려해야한다.
- 클라우드 환경이라면 VM 에 디스크 IOPS 제한이 걸려있는 경우가 있다고 한다.
데이터 미러링에 대한 고려:
- Kafka MirrorMaker 를 통해 미러링을 사용할 경우 데이터 일관성을 위해 복제에 대한 처리량도 신경써야한다.
- 미러링을 위한 파티션의 수를 적절하게 늘려주는게 중요함.
'Apache Kafka' 카테고리의 다른 글
Kafka Producer Client Internals (0) | 2023.12.27 |
---|---|
Kafka Consumer 관련 기타 정리 (0) | 2023.12.27 |
카프카 브로커 운영체제 튜닝하기 (0) | 2023.12.27 |
Kafka Producer 메시지 전달하는 방식 (0) | 2023.12.27 |
카프카 브로커 Durability 설정 (0) | 2023.12.26 |