반응형
이전 포스팅에서 kafka에 대해서 다룬 글이 있다.
kafka 에 대한 설명은 참고 포스팅을 먼저 참고 바란다.
kafka를 사용하다보니 group 이라는 개념이 등장하였다.
기존에는 그냥 단순 push하고 consume에서는 받아오는게 전부였는데
group이라는게 생소해서 정리해보려고 한다.
컨슈머 그룹(Consumer Group)
카프라의 개별 컨슈머 인스턴스 들을 하나로 묶는 논리적 그룹 단위 이다.
사용하는 이유는
1. 장애 내성 -> 특정 컨슈머에 문제가 생길경우 동일 그룹의 다른 컨슈머가 계속해서 파티션에서 데이터를 읽을수 있다.
2. offset 관리
등이 있다.
아래 그림을 보면 이해가 갈것이다.
단일 그룹일 경우엔
이렇게 하나의 컨슈머에서 모든 작업을 이루어진다.
만약 여러개의 그룹이 있다면
이렇게 메세지를 나눠갖게 된다.
이러다가 하나의 consumer 가 문제 생기면
이렇게 그룹 내에서 다른 컨슈머가 해당 메세지를 대신 받아주게 된다.
주의점
처음엔 그룹을 신경 안쓰고 각각 토픽id별로 서비스를 만들었고, 그룹아이디는 동일하게 묶었었다.
그러니 모든 메세지를 수신하지 못하였다.
확인해보니 서로 다른 서비스를 제공하는 컨슈머들이 하나의 그룹에 묶여있기에
정상적인 로직을 갖고있는 컨슈머가 메세지를 consume 할 경우에만 정상 작동 하였다.
참고 포스팅
https://thenicesj.tistory.com/259
반응형
'IT > Knowledge' 카테고리의 다른 글
Kafka 의 Acknowledgement (AcksMode) (13) | 2024.02.23 |
---|---|
Trigger 란? (트리거) (27) | 2024.02.16 |
샤딩(Sharding) 이란? (22) | 2024.02.04 |
파티셔닝 이란? (22) | 2024.01.24 |
Dispatcher Servlet 이란? (feat. FrontController 패턴) (25) | 2024.01.18 |
댓글