카프카 파티션 주의해서 사용하자
Last updated
Last updated
가용성을 증가시키려고 간혹 파티션을 늘리는 경우가 있다
우선 파티션에 대해서 이야기 전에 메시지 저장방식을 알아볼 필요가 있다
발송한 메시지를 브로커에 전달한다
컨슈머는 브로커에 적재된 메시지를 소비한다
브로커는 기본적으로 3대 이상을 권장한다
왜냐하면 한 대의 브로커가 장애가 발생했을 경우에 가용할 수 있는 다른 브로커로 대체하기 위함이다
즉시 가용하는 브로커는 리더라 명명하고, 스탠바이하고 있는 브로커는 팔로워라 한다
리더가 다운되었을때 쥬키퍼는 팔로워 중에 하나를 리더로 승격시키며 서비스를 그대로 운영할수 있게된다
단, 팔로워가 리더로 바로 운영가능하려면 리더는 주기적으로 팔로워에게 메시지를 복제해야 한다
이전의 동작방식을 보았지만 실제로 가용하는 브로커는 한대이며, 나머지 브로커는 스탠바이 상태로 복제만 이루어지고 있다
그런데 만약 프로듀서가 스케일 아웃되어 하나의 브로커에서 감당할 수 없는 상태일 경우, 우리가 선택할 수 있는 선택지는 파티션이다
파티션을 통해서 토픽에 대해 병렬로 처리된다면 그만큼 가용성을 증대시킬 수 있다
브로커간에는 가용성을 위해서 데이터를 복제한다
파티션도 예외가 아니다
브로커간에 파티션으로 메시지를 분배하게 된다면 이 또한 복제되어야 하므로 더 많은 소요시간이 필요하다
또한, 리더 브로커가 다운된다면 팔로워 브로커중에서 리더를 승격시키며 이전에 파티션에 있던 메시지들을 다른 브로커로 복제해주어야 하기 때문에 더 많은 소요시간이 발생한다
파티션의 최대 갯수는 1000 * b(브로커수) * r(복제 수) 이다
하지만 잘못 사용하면 오히려 성능을 떨어뜨릴수도 있으니 주의해서 사용하자