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 |