Solution

[Apache Kafka] Consumer Group

jih0ssang 2024. 6. 24. 22:48

참고 블로그:

https://devlog-wjdrbs96.tistory.com/442

https://medium.com/@greg.shiny82/실무-관점에서의-apache-kafka-활용-023d468f9182

 

  • 하나의 토픽에 여러 컨슈머 그룹이 동시에 메세지를 가져올 수 있다.
  • 동일한 컨슈머 그룹 내 컨슈머가 추가되면 위와 같이 파티션 소유권이 바뀌게 되고, 이렇게 소유권이 이동하는 것을 리밸런스 라고 한다.
  • 컨슈머 그룹의 리밸런스를 통해 컨슈머 그룹에는 컨슈머를 쉽고 안전하게 추가할 수 있고 제거할 수도 있어 높은 가용성과 확장성을 확보할 수 있다.

카프카가 다중 컨슈머(Multiple Consumer) 기능을 지원한다는 것이다. 다중 컨슈머 기능이란 여러 개의 컨슈머 그룹이 서로간의 상호 간섭 없이 각자의 오프셋으로 각자의 순서에 맞게 메시지를 읽고 처리할 수 있는 것을 말한다. 이러한 방식은 컨슈머가 메시지를 읽으면 해당 메시지가 소비되어 다른 컨슈머에서는 읽을 수 없게 되는 메시지 큐(Message Queue) 와는 다른 방식이다.

 

토픽의 파티션에는 하나의 컨슈머만 연결 가능하다.

  • 메세지 처리량을 올리기 위해서 파티션 수는 늘리지 않고 컨슈머 수만 늘리는 것은 의미가 없다. 토픽의 파티션에는 하나의 컨슈머만 연결이 가능하기 때문에 컨슈머를 추가해도 메세지를 소비할 수 없기 때문이다.
  • 하나의 파티션에 하나의 컨슈머만 붙을 수 있는 이유는 각각의 파티션에 대해서는 메세지 순서를 보장하기 위해서다.
  • 즉, 컨슈머를 늘리고 싶으면 토픽의 파티션 수를 먼저 늘려야 한다.

 

컨슈머 리밸런스 특징

  • 컨슈머 그룹 내 컨슈머 하나가 다운되는 경우 리밸런스 된다.
  • 리밸런스가 발생하면 컨슈머 그룹 전체가 일시적으로 메세지를 가져올 수 없다는 특징이 있다.
    • 잠깐 일시정지 후 다시 메시지를 가져올 때 최근 커밋된 오프셋부터 읽어서 가져온다.
    • 컨슈머 그룹 내에서 리밸런스가 일어나면 토픽의 각 파티션마다 하나의 컨슈머가 연결된다.
    → 실제 마지막 처리한 오프셋보다 저장된 오프셋이 작다면 메시지 중복 처리 문제가 발생!!컨슈머 옵션에서 자동 커밋을 설정해주면 가장 마지막 오프셋을 자동으로 커밋한다.
  • Kafka에서는 직접 오프셋을 관리하지 않는 자동 커밋 방법을 제공한다.

 

컨슈머 그룹 특징

  • 여러 컨슈머 그룹들이 하나의 토픽에서 메세지를 가져갈 수 있는 이유는 컨슈머 그룹마다 각자의 오프셋을 별도로 관리하기 때문이다.
  • 즉, 하나의 토픽에 두 개의 컨슈머 그룹뿐만 아니라 더 많은 컨슈머 그룹이 연결되어도 다른 컨슈머 그룹에게 영향 없이 메세지를 가져갈 수 있다는 특징이 있다.

'Solution' 카테고리의 다른 글

[ElasticSearch] 개념  (0) 2024.06.26
[Apache Kafka] 커밋, Offset과 Lag  (0) 2024.06.24
[Apache Kafka] Topic / Partition / Record  (0) 2024.06.24
[Apache Kafka] Kafka 개념  (0) 2024.06.24