Apache Kafka

Kafka Producer & Consumer란?

beekei 2021. 9. 17. 11:15
반응형

Producer & Consumer란?

프로듀서(producer)는 메세지를 생산하고 토픽(topic)에 메세지를 쓴다.

컨슈머(consumer)는 토픽에 씌여진 메시지를 읽어 온다.

프로듀서(producer)는 컨슈머(consumer)의 존재를 알지 못하고 카프카에 메세지를 쓴다.

만약에 여러개의 토픽에 여러개의 파티션(partition)을 나누고, 특정 메세지들을 분류해서 특정 파티션에 저장하고 싶다면, key 값을 통해서 분류해서 넣을 수 있다.

만약 컨슈머의 갯수가 파티션의 갯수와 같다면 1대1로 메시지를 읽어올 수 있기 때문에 빠른 속도로 처리할 수 있다.

컨슈머의 갯수가 더 많다면 남는 컨슈머는 파티션을 할당받지 못하고 대기하게 된다.

Consumer Group

Kafka 컨슈머(consumer) 인스턴스들을 하나로 묶은 논리적 그룹

 

Consumer Group을 사용하는 이유?

장애 내성(Fail Over)

특정 컨슈머에 문제가 생기는 경우 동일 그룹내의 다른 컨슈머가 계속해서 파티션(partition)에서 데이터를 읽을 수 있다.

Offset 관리

쓰이는 용도에 따라 그룹으로 분리해 관리하고 수신할 수 있다. 그룹1이 수신했다고 그룹2가 수신하지 못하는것이 아니라 각자 수신이 가능하다. 각자 그룹들은 어디까지 데이터를 읽어왔는지 offset을 기준으로 관리한다.

ex) 광고 데이터 topic → 사용자 클릭 정보, 과금 애플리케이션

Rebalancing

컨슈머 그룹(consumer group)을 구성하여 데이터를 처리하게 된다면, 운영 상황에서 다양한 경우의 수를 마주할 수 있다.

그룹에 참여하는 컨슈머(consumer) 클라이언트 구성에 변화가 생기거나 장애가 생겨 다운 된 경우 이 변화를 반영하기 위해 파티션과 컨슈머를 재 할당하게 되는데 이걸 리벨런싱(rebalancing) 이라고 한다.

반응형