1. Kafka 2.x 버전에서의 Offset과 Commit 이해하기


https://kroki.io/graphviz/svg/eNqVkD9rwzAQxfd-isNTO7TUWoM7xEOGElpotxCMbJ8dYVlnThYESr573ciR6yS0ZHz33u_-lapm2e1gBV93ACxNUypOPpeLQRkqETZ2JztMctpvf2rW5R4otLM9cvZ8BAG0zFEn0ausGgmpN-HeS_G0f4gWx1hBmjjJtUOvl0zNENyMuJfR1pvvknvVKzLBD5VTJCVjXYv8VlUWexuCWVaMTkbe8sTh2g3x_IZTT1gxuW62eM2IZj45DjMDF59vJy4zYtpn_MHjy5WD19LIGsflJ3vIXs7_QFNaWKO1_yDiT2Rq_As5_29KbasG7etzUNwGHr4BLAzSQQ==

  1. Broker: Kafka 클러스터 내의 브로커입니다. 파티션을 관리한다.
  2. Partition: 메시지가 저장되는 파티션입니다. Consumer에게 메시지를 전달한다.
  3. __consumer_offsets: Consumer가 처리한 마지막 메시지의 위치(offset)를 저장하는 특수한 토픽이다.
  4. Consumer Group: 하나 이상의 Consumer로 구성된 그룹입니다. 각 Consumer는 파티션에서 메시지를 가져와 처리한다.

1-1. 동작 과정

  1. Broker가 Partition을 관리: Broker는 여러 파티션을 관리하며, 각 파티션에 메시지를 저장한다.
  2. Partition에서 Consumer로 메시지 전달: 파티션은 Consumer에게 메시지를 전달한다.
  3. Consumer가 Offset Commit: Consumer는 메시지를 처리한 후, 그 위치(offset)를 __consumer_offsets 토픽에 commit한다. 이렇게 하면 다음에 Consumer가 다시 시작할 때 마지막으로 처리한 메시지 위치부터 시작할 수 있다.

2. Offset과 Commit