programing

카프카 전기 소비 장치 오프셋은 어떻게 결정됩니까?

goodsources 2022. 7. 18. 22:19
반응형

카프카 전기 소비 장치 오프셋은 어떻게 결정됩니까?

저는 카프카는 비교적 처음입니다.조금 실험해 보았습니다만, 소비자 오프셋에 대해서는 불명확한 점이 몇 가지 있습니다.지금까지 이해한 바로는 컨슈머가 기동했을 때 읽기 시작하는 오프셋은 구성 설정에 따라 결정됩니다.auto.offset.reset(틀렸다면 정정해 주세요).

예를 들어 토픽에 10개의 메시지(오프셋0 ~ 9)가 있는데, 한 소비자가 그 중 5개를 소비한 것은 다운되기 전(또는 내가 소비자를 죽이기 전)입니다.그 후, 그 소비자 프로세스를 재기동한다고 합시다.질문은 다음과 같습니다.

  1. 이 경우,auto.offset.reset로 설정되어 있다.earliest, 항상 오프셋0부터 소비하기 시작합니까?

  2. 이 경우,auto.offset.reset로 설정되어 있다.latest오프셋 5부터 소비됩니까?

  3. 이런 종류의 시나리오에 관한 행동은 항상 결정론적인가?

궁금한 점이 있으면 언제든지 말씀해주세요.

그것은 당신이 설명한 것보다 조금 더 복잡합니다.
컨피규레이션은 컨슈머 그룹에 유효한 오프셋이 커밋되어 있지 않은 경우에만 실행됩니다(지원되는 오프셋스토리지는 현재 Kafka와 Zookeeper입니다).또, 사용하는 컨슈머의 종류에 따라서도 다릅니다.

고급 Java 컨슈머를 사용하는 경우 다음과 같은 시나리오를 상상해 보십시오.

  1. 소비자 그룹에 소비자가 있습니다.group15개의 메시지를 소비하고 사망했습니다.다음 번에 이 컨슈머를 시작할 때는 이 컨슈머도 사용하지 않습니다.auto.offset.reset저장된 오프셋을 오프셋 스토리지(앞서 설명한 바와 같이 Kafka 또는 ZK)에서 가져오기 때문에 중단된 위치에서 계속됩니다.

  2. 토픽에 메시지가 있고(설명한 대로), 새로운 소비자 그룹에서 소비자를 시작합니다.group2. 어디에도 오프셋이 저장되지 않으며 이번에는auto.offset.resetconfig는 토픽의 첫머리부터 시작할지 여부를 결정합니다(earliest또는 토픽의 마지막 부분(latest)

어떤 오프셋 값에 대응하는지에 영향을 주는 것이 하나 더 있습니다.earliest그리고.latestconfigs는 로그 유지 정책입니다.보존 시간이 1시간으로 설정된 토픽이 있다고 가정합니다.5개의 메시지를 생성하고 1시간 후에 5개의 메시지를 더 투고합니다.latest오프셋은 이전 예시와 동일하게 유지되지만earliest할 수 없을 것이다0왜냐하면 Kafka는 이미 이 메시지들을 제거할 것이고, 따라서 사용 가능한 가장 이른 오프셋은5.

위에서 언급한 모든 것이 다음과 관련이 있는 것은 아닙니다.SimpleConsumer실행할 때마다 어디서부터 시작할지 결정합니다.auto.offset.reset설정을 실시합니다.

0.9보다 오래된 버전의 Kafka를 사용하면earliest,latest와 함께smallest,largest.

업데이트만:Kafka 0.9 이후부터 Kafka는 새로운 Java 버전의 컨슈머를 사용하고 있으며 auto.offset.reset 파라미터명이 변경되었습니다.매뉴얼에서 다음 절차를 따릅니다.

Kafka에 초기 오프셋이 없거나 현재 오프셋이 서버에 더 이상 존재하지 않는 경우(예를 들어 데이터가 삭제되었기 때문에) 어떻게 해야 합니까?

earest: 오프셋을 가장 빠른 오프셋으로 자동 재설정

latest: 오프셋을 최신 오프셋으로 자동 재설정

none: 소비자 그룹에 대한 이전 오프셋을 찾을 수 없는 경우 소비자에게 예외를 발생시킵니다.

기타 사항: 소비자에게 예외를 둡니다.

합격된 답변을 확인한 후 시간을 들여 찾아냈기 때문에 커뮤니티에 게시하는 것이 도움이 되지 않을까 생각했습니다.

게다가 offsets.retention.minutes도 있습니다.마지막 커밋 이후의 시간이 >일 경우,도 기동합니다.

언급URL : https://stackoverflow.com/questions/32390265/what-determines-kafka-consumer-offset

반응형