kafka 소비자 offset 기록 위치 및 방식

2409 단어 빅 데이터kafka
1. 머리말
kafka 소비자 들 은 소비의 진 도 를 보존 할 것 이다. 즉, offset 이다. 저장 의 위 치 는 선택 한 kafka-api 에 따라 다르다.
2. zookeeper 저장 소
우선 소비자 가 java-api 에 따라 소비 하 는 것 이 라면 kafka.javaapi.consumer.ConsumerConnector 배치 매개 변수 zookeeper.connect 를 통 해 소비 하 는 것 이다.이 경우 소비자 의 offset 은 zookeeper consumers/{group}/offsets/{topic}/{partition} 디 렉 터 리 에 업 데 이 트 됩 니 다. 예 를 들 어:
[zk: 100.5.14.161:2181(CONNECTED) 20] get /consumers/console-consumer-21030/offsets/topic_test_1/0
37
cZxid = 0x50000053a
ctime = Thu Dec 20 17:26:58 CST 2018
mZxid = 0x50000053a
mtime = Thu Dec 20 17:26:58 CST 2018
pZxid = 0x50000053a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0


3. kafka topic 저장 소
만약 에 kafka 의 기본 api 에 따라 소비 하 는 것 이 라면 org.apache.kafka.clients.consumer.KafkaConsumer 매개 변수 bootstrap.servers 를 설정 하여 소비 할 것 입 니 다.한편, 소비자 의 offset 은 kafka 자체 테이프 의 topic: __consumer_offsets 아래 에 업데이트 되 어 현재 group 의 소비 진 도 를 살 펴 보면 kafka 자체 테이프 의 도구 kafka-consumer-offset-checker 에 의존 해 야 한다. 예 를 들 어:
[2018-12-25 11:48:10,163] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)
Group           Topic                          Pid Offset          logSize         Lag             Owner
test_group_1    topic_test_1                   0   489             491             2               none
test_group_1    topic_test_1                   1   489             490             1               none
test_group_1    topic_test_1                   2   490             491             1               none

4. offset 업데이트 방식
offset 업데이트 방식 은 어떤 api 를 사용 하 는 지 구분 하지 않 고 크게 두 가지 로 나 뉜 다.
  • 자동 제출, enable. auto. commit = true 설정, 업데이트 빈 도 는 매개 변수 [auto. commit. interval. ms] 에 따라 정 합 니 다.이런 방식 은 [at most once] 라 고도 불 린 다. fetch 는 소식 이 도착 하면 offset 를 업데이트 할 수 있다. 소비 성공 여부 와 상 관 없 이.
  • 수 동 으로 제출 하고 enable. auto. commit = false 를 설정 합 니 다. 이런 방식 을 [at least once] 라 고 합 니 다.fetch 가 메시지 에 도착 하면 소비 가 완료 되면 호출 방법 [consumer. comitSync ()] 을 수 동 으로 offset 을 업데이트 합 니 다.소비 에 실패 하면 offset 도 업데이트 되 지 않 고 이 메 시 지 는 한 번 중복 소 비 됩 니 다.

  • 참고:https://blog.csdn.net/u013063153/article/details/78122088

    좋은 웹페이지 즐겨찾기