kafka auto commit

yoon__0_0·2024년 9월 9일
0

프로젝트

목록 보기
7/7

Kafka의 유실과 중복 가능성에 대해 알아보자!!

Kafka Conumser Commit

  • Commit 이란, 컨슈머가 어느 오프셋까지 읽었는지 기록하는 행위를 뜻함
  • 커밋을 하는 이유 : 컨슈머가 중단되거나 재시작 되었을 때, 다음 오프셋부터 처리하기 위함.

kafka 유실, 중복 방지 설정

=> enable.auto.commit설정

True

  • 기본적으로 true로 되어있음.
  • at most once
  • 일정 간격(auto.commit.interval.ms)으로 poll() 메서드 호출시 자동 commit 하는 것
  • commit 관련 코드를 작성할 필요 없이 편리.
  • 속도가 가장 빠름
  • 중복 또는 유실이 발생할 수 있음.

False

commitSync
  • 동기 커밋
  • exactly once
  • ConsumerRecord 처리 순서를 보장함
  • 속도가 가장 느리며 커밋이 될때까지 block 됨.
  • poll() 메서드로 반환된 ConsumerRecord의 마지막 offset을 커밋함
  • Map<TopicPartition, OffsetAndMetadata> 를 통해서 오프셋 지정 커밋 가능함.
commitAsync
  • 비동기 커밋
  • at least once
  • 동기 커밋보다 빠름
  • 중복이 발생할 수 있음
    - 일시적인 통신 문제로 이전 offset보다 이후 offset이 먼저 커밋될 때
  • ConsumerRecord처리 순서를 보장하지 못함.
    - 처리 순서가 중요한 서비스에서는 사용이 제한 됨.
profile
신윤재입니다

0개의 댓글