4.6. 오프셋을 커밋할 때 데이터 손실 또는 중복 방지


Kafka 자동 커밋 메커니즘을 사용하면 소비자가 메시지의 오프셋을 자동으로 커밋할 수 있습니다. 활성화하면 소비자는 5000ms 간격으로 브로커 폴링에서 수신된 오프셋을 커밋합니다.

자동 커밋 메커니즘은 편리하지만 데이터 손실 및 복제 위험이 발생합니다. 소비자가 여러 메시지를 가져와서 변환했지만 자동 커밋을 수행할 때 시스템이 소비자 버퍼에서 처리된 메시지와 함께 충돌하면 해당 데이터가 손실됩니다. 메시지를 처리한 후 시스템이 충돌하지만 자동 커밋을 수행하기 전에 시스템의 재조정 후 다른 소비자 인스턴스에서 데이터가 복제됩니다.

자동 커밋은 브로커의 다음 폴링 전에 모든 메시지가 처리되거나 소비자가 닫히기 전에 모든 메시지가 처리되는 경우에만 데이터 손실을 방지할 수 있습니다.

데이터 손실 또는 복제 가능성을 최소화하기 위해 enable.auto.commitfalse 로 설정하고 클라이언트 애플리케이션을 개발하여 오프셋을 더 많이 제어할 수 있습니다. 또는 auto.commit.interval.ms 를 사용하여 커밋 간 간격을 줄일 수 있습니다.

# ...
enable.auto.commit=false 
1

# ...
Copy to Clipboard Toggle word wrap
1
커밋 오프셋을 더 많이 제어하려면 자동 커밋이 false로 설정됩니다.

enable.auto.commitfalse 로 설정하면 모든 처리가 수행되고 메시지가 사용된 후 오프셋을 커밋할 수 있습니다. 예를 들어 Kafka commitSynccommitAsync 커밋 API를 호출하도록 애플리케이션을 설정할 수 있습니다.

commitSync API는 폴링에서 반환된 메시지 배치의 오프셋을 커밋합니다. 일괄 처리의 모든 메시지 처리를 완료하면 API를 호출합니다. commitSync API를 사용하는 경우 배치의 마지막 오프셋이 커밋될 때까지 애플리케이션은 새 메시지를 폴링하지 않습니다. 처리량에 부정적인 영향을 미치는 경우 더 자주 커밋하거나 commitAsync API를 사용할 수 있습니다. commitAsync API는 브로커가 커밋 요청에 응답할 때까지 기다리지 않지만 재조정 시 더 많은 중복을 생성할 위험이 있습니다. 일반적인 접근 방식은 애플리케이션에서 커밋 API를 모두 결합한 후 소비자를 종료하거나 재조정하기 전에 사용된 commitSync API를 결합하여 최종 커밋이 성공했는지 확인하는 것입니다.

4.6.1. 트랜잭션 메시지 제어

트랜잭션 ID를 사용하고 생산자 측에서 멱등(enable.idempotence=true)을 활성화하여 정확하게 제공되도록 하는 것이 좋습니다. 소비자 측에서 isolation.level 속성을 사용하여 소비자가 트랜잭션 메시지를 읽는 방법을 제어할 수 있습니다.

isolation.level 속성에는 다음 두 가지 유효한 값이 있습니다.

  • read_committed
  • read_uncommitted (기본값)

read_committed 를 사용하여 커밋된 트랜잭션 메시지만 소비자가 읽도록 합니다. 그러나 이로 인해 소비자가 브로커에서 트랜잭션 결과를 기록하는 트랜잭션 마커를 작성할 때까지 메시지를 반환할 수 없기 때문에 엔드 투 엔드 대기 시간이 증가합니다(커밋 또는 중단됨).

# ...
enable.auto.commit=false
isolation.level=read_committed 
1

# ...
Copy to Clipboard Toggle word wrap
1
사용자가 커밋한 메시지만 읽도록 read_committed 로 설정합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat