Kafka 컨슈머 랙
Consumer Lag
컨슈머 랙은 컨슈머 애플리케이션, 전체 데이터 파이프라인을 운영할 때 가장 중요한 지표중 하나이다.
-
컨슈머 랙을 모니터링을 하지 정상적으로 데이터 처리를 하고 있지 않은 것과 마찬가지라고 할 만큼 중요한 포인트이다.
-
컨슈머는 환경에 따라 데이터 처리 속도가 늦어 질 수 있기 때문에 항상 최신의 오프셋을 처리하고 있다고 보장할 수 없다.
-
컨슈머 랙은 파티션의 최신 오프셋(LOG-END-OFFSET)과 컨슈머 오프셋(CURRENT-OFFSET) 간의 차이다.
-
프로듀서는 계속해서 새로운 데이터를 파티션에 저장하고 컨슈머는 자신이 처리할 수 있는 만큼 데이터를 가져간다.
- 갯수
- 컨슈머 랙은 컨슈머 그룹과 토픽, 파티션별로 생성된다.
- 1개의 토픽에 3개의 파티션이 있고 1개의 컨슈머 그룹이 토픽을 구독하여 데이터를 가져가면 컨슈머 랙은 총 3개가 된다.
- 프로듀서와 컨슈머의 데이터 처리량
- 프로듀서가 보내는 데이터량이 컨슈머의 데이터 처리량보다 크다면 컨슈머 랙은 늘어난다.
- 반대로 프로듀서가 보내는 데이터량이 컨슈머의 데이터 처리량보다 적으면 컨슈머 랙은 줄어들고 최솟값은 0으로 지연이 없음을 뜻한다.
컨슈머 랙 모니터링
컨슈머 랙을 모니터링하는 것은 카프카를 통한 데이터 파이프라인을 운영하는데에 핵심적인 역할을 한다.
컨슈머 랙을 모니터링함으로써 컨슈머의 장애를 확인할 수 있고 파티션 갯수를 정하는 데에 참고할 수 있기 때문이다.
- 처리량 이슈
- 프로듀서의 데이터량이 늘어날 경우에는 컨슈머 랙이 늘어날 수 있다. 이 경우 파티션 갯수와 컨슈머 갯수를 늘려 병렬처리량을 늘려 컨슈머 랙을 줄일 수 있다.
- 컨슈머의 갯수를 2개로 늘림으로써 컨슈머의 데이터 처리량을 2배로 늘릴 수 있다.
- 파티션 이슈
- 프로듀서의 데이터량이 일정함에도 불구하고 컨슈머의 장애로 인해 컨슈머 랙이 증가할 수도 있다. 컨슈머는 파티션 갯수만큼 늘려서 병렬처리하며 파티션마다 컨슈머가 할당되어 데이터를 처리한다.
- 프로듀서가 보내는 데이터량은 일정한데 파티션 1번의 컨슈머 랙이 늘어나는 상황이 발생한다면 1번 파티션에 할당된 컨슈머에 이슈가 발생했음을 유추할 수 있다.
Comments