ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kafka Consumer Group 알아보기
    Backend/Kafka 2023. 9. 10. 00:37
    728x90

    Consumer Group ?

    Consumer 이 묶여있는 그룹을 의미한다.

    Consumer Group 의 특징

    - Consumer Group 별로 offset 을 관리한다.

    * offset 이란 파티션 내에서 데이터의 위치를 표시하는 유니크한 숫자이다. 내부 토픽을 통해 관리한다.

     

    - Consumer Group 은 동일 그룹내의 Consumer 가 문제가 생길 시 동일 그룹의 다른 Consumer 가 역할을 대신 수행할 수 있다.

    이를 리밸런싱이라고 한다. ( Consumer Group 별로 offset 을 관리하므로 가능 )

     

    - Consumer Group 의 Consumer 수는 Topic 의 Partition 수를 넘지 못한다.

    Partition 의 개수 >= Consumer Group 내의 Consumer 의 개수

    ( Partition 은 최대 1개의 Consumer 만 붙을 수 있다, Consumer 는 여러 Partition 에 붙을 수 있다. )

     

    - Consumer Group 간의 독립성을 보장하여 같은 토픽의 데이터를 읽는데에 문제가 없다.

     

    Consumer Group 리밸런싱

    Kafka Broker 중 하나가 Group coordinator 의 역할로 리밸런싱을 발동시킨다.

    Consumer Group 내의 Consumer 에 문제가 발생하면 다른 Consumer 가 대신 역할을 수행한다.

     

     

    리밸런싱은 3가지 경우에 일어난다.

     

    1. 컨슈머의 생성 / 삭제

    2. 설정된 시간안에 Poll 요청을 보내지 않았을때 ( max.poll.interval.ms 로 설정된 시간 )

    3. 컨슈머가 설정된 시간안에 하트비트를 보내지 못했을때 ( session.timeout.ms 로 설정된 시간 )

     

     

    리밸런싱 시 유의할 점

     

    - 리밸런싱이 완료되기 전 까지는 Consumer 가 동작하지 않는다.

    리밸런싱을 줄이기 위해 max.poll.records 값을 줄일 수 있다. ( 처리할 레코드가 적어지므로 리밸런싱 발생 감소 위의 2번을 초과하지 않을 확률이 높아짐, 데이터 중복 처리 개수가 줄어듦 )

     

    - Consumer 에 문제가 생겨 리밸런싱이 될 때 문제가 생긴 Consumer 가 _consumer_offsets 토픽에 오프셋이 정상적으로 기록하지 못했다면 데이터를 중복으로 처리하게 될 수 있다. 이를 방지하기 위해서 멱등성을 지킬 수 있도록 코드를 작성해야한다.

    ( 수동 커밋을 통해 오프셋을 기록할 수 있다. 동기 비동기 전부 가능 / Default 는 자동으로 커밋됨 )

     

    728x90
Designed by Tistory.