본문 바로가기
IT/개발

5) Consumer

by 한다_ 2023. 9. 7.

Consumer Offset

  • Consumer Group이 읽은 위치를 표시
  • Consumer가 자동 / 수동으로 읽은 데이터 위치를 Commit하여 다시 읽는 것을 방지
  • __conuser_offsets라는 Internal Topic에 Consumer Offset을 저장하여 관리

Mulit Partition with Single Consumer

  • 여러개의 Partition으로 구성된 Topic의 데이터를 사용하는 Single Consumer의 경우 Topic의 모든 Partition에서 모든 Message를 가져옴 이때, 각 Parttition의 Offset을 별도로 관리

Multi Partition with Consumer Group

  • 여러개의 Partition, 그와 동일한 숫자의 Consumer로 이루어진 Consumer Group이 있다면, 각 Consumer에 하나의 Partition이 할당된다
  • Consumer는 Topic에서 0개 이상의 Partition을 사용할 수 있음

Multi Consumer Group

  • group id를 다르게 하면 다른 Consumer Group이 된다
  • 하나의 Topic에서 Message를 가져가는 여러 Consumer Group이 존재할 수 있음

Message Ordering 메시지 순서 보장

  • Topic 내부에 Partition이 2개 이상이라면 Topic 내부의 전체 메시지에 대한 순서 보장 불가
  • Partition을 1개로 구성한다면 전체 순서 보장은 가능하나 처리량이 저하됨
  • Partition을 1개로 구성하며 무조건 순서를 보장해야하는 경우가 실제로 필요한지에 대한 생각이 필요
    • 대부분 Key로 구분할 수 있는 메시지들의 순서 보장이 필요한 경우임
  • 어차피 동일한 Key는 동일한 Partition에 전달이 되기 때문에 Key 기준으로 순서를 보장할 수 있음 → 다수의 Partition 사용 가능
  • ! 운영중 Partition의 개수를 변경하게 되면 순서를 보장할 수 없게됨

Cardinality

특정 데이터 집합에서 유니크한 값의 개수

  • Key 선택이 잘 못되면 작업 부하가 고르지 않을 확률이 높아짐
  • Key는 단순한 유형이 아닌 복잡한 객체가 될 수도 있음
  • Key 설계를 잘 해서 Partition에 고르게 분포될 수 있게 해야함

Consumer Faliure

  • Consumer에 장애가 발생한다면, Rebalancing되어 정상적으로 작동하는 Consumer가 장애가 발생한 Consumer의 Partition을 대신하여 처리함
    • Partition은 언제나 Consumer Group에서 하나의 Consumer에 의해서만 사용됨

 

 

출처 - 패스트캠퍼스 Kafka 완전 정복

'IT > 개발' 카테고리의 다른 글

Object mapper으로 다수 파일 처리시 stream closed  (0) 2023.11.27
Mongo DB geoWithinBox와 AWS Document DB  (0) 2023.11.26
4) Producer  (0) 2023.09.05
3) Broker, Zookeeper  (0) 2023.08.28
2) Topic, Partition, Segment  (0) 2023.08.28