2024. 12. 2. 00:46ㆍKafka
Kafka Consumer Group
Kafka Consumer Group은 Kafka의 개별 Consumer 인스턴스들을 하나로 묶는 논리적 그룹 단위 입니다. 하나의 Topic에는 여러 Consumer Group이 동시에 접속해 메시지를 가져올 수 있습니다. 이것은 기존의 다른 메시징 큐에서 Consumer가 메시지를 가져가면 큐에서 삭제되어 다른 Consumer가 가져갈 수 없는 것과는 다른 방식입니다. 이 방식을 통해 하나의 데이터를 다양한 용도로 사용할 수 있습니다.
Kafka Consumer Group을 사용하는 이유
장애 내성
특정 Consumer에 문제가 생기는 경우 동일 Group 내의 다른 Consumer가 계속해서 파티션에서 데이터를 읽을 수 있습니다.
예를 들어 위 그림에서 server1에 장애가 발생하더라도 동일 Comsumer Group 내의 다른 Consumer들이 계속해서 읽을 수 있도록 리밸런싱이 됩니다. Kafka는 Consumer Group 단위로 Offset을 관리하기 때문입니다.
Offset 관리
Kafka는 Consumer Group 단위로 Offset을 관리합니다. 위의 그림을 참조하면 Topic T1에 있는 데이터는 G1, G2가 각각 따로 수신합니다. G1이 수신한 데이터를 G2가 수신하지 못 하는 형태가 아닙니다.
Kafka가 Consumer Group 단위로 Offset을 관리하는 이유
만약 Producer가 Topic에 보내는 메시지 속도가 갑자기 증가해 Consumer가 메시지를 가져가는 속도보다 빨라지게 되면 큐에 메시지가 쌓이게 되어 Producer가 메시지를 생성하는 시간과 Consumer가 메시지를 처리하는 시간의 간격이 점점 벌어지게 됩니다. 이 시간차를 줄이기 위해 Consumer를 늘리게 될 경우 Offset 정보와 새로 추가된 Consumer의 Offset 정보가 뒤섞여 메시지가 뒤죽박죽될 수 있습니다. 그래서 Kafka는 Consumer Group을 만들어 Consumer Group에 소속된 여러 Consumer가 메시지를 가져갈 수 있도록 Offset을 관리하고 있습니다.
'Kafka' 카테고리의 다른 글
Consumer Group Rebalance (0) | 2024.12.16 |
---|---|
Reactor Kafka (0) | 2024.11.16 |