Kafka MultiThread Consumer

less than 1 minute read

Kafka MultiThread Consumer

카프카 컨슈머는 프로세스는 여러개의 스레드를 가질 수 있습니다. 경우에 따라 여러개의 프로세스들로이루어진 컨슈머를 구성할 수도 있고 프로세스 내에 여러개의 스레드로 구성된 컨슈머를 만들 수도 있습니다. 이렇게 멀티 스레드로 진행할 경우 스레드 간에 영향을 주지 않도록 신경서야하는 것이 많지만 안정적으로 운영만 할 수 있다면 더 효과적이고 빠른 컨슈머 어플리케이션 제작이 가능하다.

이러한 멀티스레드 컨슈머를 구현하는 방법은 멀티 워커 스레드, 컨슈머 멀티 스레드 전략이있다. 멀티 워커 스레드 전략은 여러 스레드에서 작업을 병렬적으로 처리하여 속도를 높이는 방법이다. 자바에서는 Executors를 사용하여 스레드 풀을 만들 수 있는데 이러한 스레드 풀을 사용하여 워커 스레드를 만들고 이를 통해 컨슈머의 작업을 수행할 수 있다. 코드에서 데이터를 poll 한 후에 poll한 데이터를 처리하는 작업을 스레드 풀의 워커 스레드에게 넘겨주어 작업을 수행하게 만들어 주는 방법이다. 이러한 방식은 빠르지만 데이터가 유실될 수 있는 가능성이 있고 레코드 처리의 역전현상이 발생할 수 있다. 그렇기 때문에 역전 현상과 중복 처리가 발생해도 괜찮은 작업에서 많이 쓰인다.

컨슈머 멀티 스레드는 파티션에 할당되는 컨슈머가 스레드에서 작동하는 것이다. 토픽의 파티션 개수 이상만큼 컨슈머 스레드를 운용해서 데이터를 가져오는 방식이다. 즉 멀티 워커 스레드에서는 프로세스 차원에서 데이터를 poll한 다음 worker 노드가 데이터를 처리하는 방식이었다면 컨슈머 멀티 스레드 전략은 poll또한 각 스레드에서 진행하는 방식이다.

출처:

아파치카프카 애플리케이션 프로그래밍 with 자바

카프카, 데이터 플랫폼의 최강자

Tags:

Categories:

Updated:

Leave a comment