1. Kafka 2.x 버전에서의 Offset과 Commit 이해하기
- 이 그림은 Kafka 2.x 버전을 기준으로 Kafka의 Offset과 Commit 구조를 나타낸다.
https://kroki.io/graphviz/svg/eNqVkD9rwzAQxfd-isNTO7TUWoM7xEOGElpotxCMbJ8dYVlnThYESr573ciR6yS0ZHz33u_-lapm2e1gBV93ACxNUypOPpeLQRkqETZ2JztMctpvf2rW5R4otLM9cvZ8BAG0zFEn0ausGgmpN-HeS_G0f4gWx1hBmjjJtUOvl0zNENyMuJfR1pvvknvVKzLBD5VTJCVjXYv8VlUWexuCWVaMTkbe8sTh2g3x_IZTT1gxuW62eM2IZj45DjMDF59vJy4zYtpn_MHjy5WD19LIGsflJ3vIXs7_QFNaWKO1_yDiT2Rq_As5_29KbasG7etzUNwGHr4BLAzSQQ==
- Broker: Kafka 클러스터 내의 브로커입니다. 파티션을 관리한다.
- Partition: 메시지가 저장되는 파티션입니다. Consumer에게 메시지를 전달한다.
- __consumer_offsets: Consumer가 처리한 마지막 메시지의 위치(offset)를 저장하는 특수한 토픽이다.
- Consumer Group: 하나 이상의 Consumer로 구성된 그룹입니다. 각 Consumer는 파티션에서 메시지를 가져와 처리한다.
1-1. 동작 과정
- Broker가 Partition을 관리: Broker는 여러 파티션을 관리하며, 각 파티션에 메시지를 저장한다.
- Partition에서 Consumer로 메시지 전달: 파티션은 Consumer에게 메시지를 전달한다.
- Consumer가 Offset Commit: Consumer는 메시지를 처리한 후, 그 위치(offset)를
__consumer_offsets
토픽에 commit한다. 이렇게 하면 다음에 Consumer가 다시 시작할 때 마지막으로 처리한 메시지 위치부터 시작할 수 있다.
2. Offset과 Commit
- Offset
- 정의: 각 파티션 내에서 메시지의 위치를 나타내는 고유한 식별자이다.
- 동작 방식: Consumer가 메시지를 읽을 때마다 해당 메시지의 Offset을 저장하고, 다음에 읽을 때 이 Offset을 기반으로 메시지를 가져온다.