카프카 파티션 주의해서 사용하자

  • 가용성을 증가시키려고 간혹 파티션을 늘리는 경우가 있다

  • 우선 파티션에 대해서 이야기 전에 메시지 저장방식을 알아볼 필요가 있다

메시지 저장 방식

  • 발송한 메시지를 브로커에 전달한다

  • 컨슈머는 브로커에 적재된 메시지를 소비한다

브로커의 기능

  • 브로커는 기본적으로 3대 이상을 권장한다

  • 왜냐하면 한 대의 브로커가 장애가 발생했을 경우에 가용할 수 있는 다른 브로커로 대체하기 위함이다

  • 즉시 가용하는 브로커는 리더라 명명하고, 스탠바이하고 있는 브로커는 팔로워라 한다

  • 리더가 다운되었을때 쥬키퍼는 팔로워 중에 하나를 리더로 승격시키며 서비스를 그대로 운영할수 있게된다

  • 단, 팔로워가 리더로 바로 운영가능하려면 리더는 주기적으로 팔로워에게 메시지를 복제해야 한다

파티션

  • 이전의 동작방식을 보았지만 실제로 가용하는 브로커는 한대이며, 나머지 브로커는 스탠바이 상태로 복제만 이루어지고 있다

  • 그런데 만약 프로듀서가 스케일 아웃되어 하나의 브로커에서 감당할 수 없는 상태일 경우, 우리가 선택할 수 있는 선택지는 파티션이다

  • 파티션을 통해서 토픽에 대해 병렬로 처리된다면 그만큼 가용성을 증대시킬 수 있다

파티션은 정답이 아닐 수 있다

  • 브로커간에는 가용성을 위해서 데이터를 복제한다

  • 파티션도 예외가 아니다

  • 브로커간에 파티션으로 메시지를 분배하게 된다면 이 또한 복제되어야 하므로 더 많은 소요시간이 필요하다

  • 또한, 리더 브로커가 다운된다면 팔로워 브로커중에서 리더를 승격시키며 이전에 파티션에 있던 메시지들을 다른 브로커로 복제해주어야 하기 때문에 더 많은 소요시간이 발생한다

파티션은 가급적 주의해서 사용하자

  • 파티션의 최대 갯수는 1000 * b(브로커수) * r(복제 수) 이다

  • 하지만 잘못 사용하면 오히려 성능을 떨어뜨릴수도 있으니 주의해서 사용하자

참고

Last updated