본문 바로가기
공부

Kafka의 파티션

by GGT 2020. 10. 21.

 

Kafka에는 브로커(서버)가 있고 

메시지가 전달되는 기준인 토픽이 다수 개 존재하며

토픽 내부에도 여러 파티션으로 나뉘어져 각각의 파티션에 메시지들이 저장되고 전달된다.

 

위 사진의 0이 들어있는 큐를 보면 토픽1 내부의 파티션 중 하나와 매칭이 되어 있는 것을 볼 수 있다.

이와 같이 파티션은 하나의 큐와 같은 형태로 동작하고 각 큐(파티션)은 내부의 메시지에 오프셋을 달아

메시지의 순서를 관리하고 전달한다.

 

그렇기 때문에

토픽 내 파티션이 많을수록 더욱 많은 메시지의 병렬처리가 가능해지기 때문에

파티션의 수는 Kafka의 병렬처리 단위라고도 말할 수 있다.

 

허나 Throughput(처리량)이 증가함에 따라 발생하는 Trade-off도 당연 존재한다.

 

 

1) 파일 핸들러의 증가

각 파티션 별로 담당하는 Open file handler는 2개씩 존재한다.(인덱스용, 실 데이터 저장 용)

따라서 파티션 수 * 2 만큼 OS의 file handler 자원을 잡아먹게 된다.

 

2) End-to-End 전송속도의 지연

Kafka는 각 메시지의 Replication이 전부 완료된 후에 메시지를 수신 가능하게끔 Consumer에게 보여준다.

이 복제는 모든 Partition 각각을 대상으로 하기 때문에 파티션이 늘어날수록

이 Replication이 모두 이뤄지는 시점도 늦춰지므로 당연히 전송 속도가 느려질 수 밖에 없다.

 

이를 제외하고도 Producer나 Consumer의 메모리를 좀 더 잡아먹는다는지

혹은 Kafka의 가용성을 낮춘다는지의 부작용이 존재한다.

 

그렇다면 어떻게 적절한 파티션의 수를 선정할 수 있을까?

그건 이제 나도 알아봐야 한다.

 

 

반응형

'공부' 카테고리의 다른 글

Kafka는 무엇일까요  (0) 2020.10.13
스프링 에러 : class doesn't contain matching constructor for autowiring  (0) 2020.06.19
기사 필기 합격!!  (0) 2020.06.06
머지 소트  (0) 2020.06.02
퀵소트  (0) 2020.05.31

댓글