[카프카] 토픽(Topic)과 파티션(Partition) 이해

    토픽(Topic)

    카프카(Kafka)는 데이터를 최종적으로 토픽(Topic)이라는 곳에 저장을 하며 데이터를 구분하기 위한 분류값 혹은 구분된 저장소라 이해하면 된다. 아파트에 있는 호별로 만들어진 우편함이라든지 이메일 주소라든지 이런 데이터를 받을 수 있는 값도 역시 카프카 관점에서는 토픽이라 볼 수 있다.

     

    카프카는 데이터를 주고 받을 때 지정된 토픽으로 주고 받게 되며, 토픽을 어떻게 설계할 것인지가 핵심이 될 수도 있다.

     

    파티션(Partition)

    카프카의 저장소명을 토픽이라 한다면 파티션은 저장소 안에 분리되어진 공간이다. 파티션의 목적은 데이터를 더 많이 더 빨리 보내고 처리할 수 있는 것을 위해서 만들어진 것으로 파티션이 없다면 마치 1차선으로 된 도로를 달리는 것과 같지만, 파티션을 늘리고 프로듀서를 늘리게 될 경우 N차선의 도로를 달리는 것과 같은 효과를 얻는다.

     

    토픽과 파티션을 이해하기 위해서 만들어본 쓸데없는 이미지

     

    파티션은 많을수록 좋은가?

    파티션이 1이 1차선과 비유할 수 있다면 파티션이 4인 것은 당연히 4차선으로 비유할 수 있다. 그렇다면 파티션이 많을수록 좋을것인가? 사실 그것도 아니다. 오히려 파티션이 많아지면 노드(브로커)가 다운이 됐을 경우 관리해야 될 포인트가 많아지고 오래 걸린다. 왜냐하면 내부적으로 토픽단위로 관리하는 것이 아니라 토픽안에 있는 파티션 단위로 분산 처리를 하기 때문이다.

     

     

    그리고 파티션이 많아지면 그만큼 파일 핸들러도 늘어나게 되어서 파티션이 많다고 무조건 좋다 볼 수 없다. 파티션은 필요한 만큼만 늘리는 것이 좋은데 예를 들어 현재 파티션 개수가 원하는 데이터를 충분히 처리하지 못할 때 파티션을 늘리는 것이다.

     

     

    댓글

    Designed by JB FACTORY