[Kafka] topic partition에 대해서.

Woong·2021년 12월 15일
0

Apache Kafka

목록 보기
3/14

partition 개요

  • partition 은 topic event에 대한 병렬 처리의 단위

    • 분산 처리하는 단위
  • partition 갯수는 고정하도록 한다.

    • partition 갯수를 줄이는 방법은 없다.
    • partition 을 늘리는 것은 가능하나, reassign 으로 인한 overhead가 높다.
  • message 의 key 값을 통해 partition 지정

    • 동일한 key 를 가진 message 는 항상 동일 partition으로 분류
    • key 값이 null일 경우 라운드 로빈 으로 partition 이동

순서 보장

  • topic 내에선 순서가 보장되지 않지만 partition 내에선 순서 보장
    • 새로운 메시지는 partition 의 끝부분에 추가된다.
    • -> 순서 보장이 필요한 데이터를 같은 partition에 할당되도록 조정
    • 하나의 파티션은 동일 consumer group 내에서 1개의 consumer 만 read 가능

partition 수가 많을 경우 장단점

장점

  • 높은 처리량
    • 여러 partition 에 대한 쓰기 동작은 동시에 병렬로 진행
    • partition 에 대해 consumer group 내에서 1개의 consumer가 할당되므로, 단일 consumer group 의 병렬 처리량은 partition 수에 결정됨

단점

  • 파일 핸들러 증가
    • 파티션별로 개별 디렉토리를 사용하므로, 파일 핸들러 open 이 필요해진다.
  • 고가용성 문제
    • 파티션별로 리더가 존재하므로, 브로커 장애 발생시 각 파티션별로 리더 선출이 필요 -> 파티션 수에 비례하여 비가용 시간 증가

      지연 시간 = (파티션 또는 복제 개수 x 단일 파티션의 메타데이터를 읽는 시간)

    • down된 broker 가 controller 인 경우 partition 개수에 비례하여 지연시간이 증가
      • 새 컨트롤러가 초기화하는 동안 zookeeper 에서 모든 파티션의 데이터를 읽어야하므로.

0개의 댓글