inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

kafka-console-consumer.sh

현재 진도까지의 test topic에 대해서 질문있습니다

965

김대호

작성한 질문수 12

0

좋은 강의 만들어주셔서 감사합니다.
 
test라는 토픽은 ReplicaFactor가 1이고 insync가 2인 상태입니다.
 
저는 이 설정이 에러가 안터지는것도 왜인지 궁금했습니다.
 
복제본의 갯수가 insync replica숫자보다 낮으면 insync 파티션갯수가 워터마크 복제 요구치보다 낮을텐데 그럼 해당 토픽에 들어간 데이터는 영영 볼수없는건가 라고 생각했기 때문입니다.
 
그래도 정상적으로 consume할수있는것은 카프카가 내부에서 파티션갯수와 insync갯수의 max값을 비교하는 로직을 통해 조정해서 작동하고있는것으로 생각해도 괜찮을까요?

데이터 엔지니어링 Kafka

답변 1

1

데브원영 DVWY

김대호님 답변드립니다.

1) test 토픽이 RF=1, min.insync.replicas=2 가 에러가 아닌 이유

min.insync.replicas는 acks=all(-1)옵션인 프로듀서가 해당 토픽에 레코드를 전송할 때 체크하는 최소 복제 단위 옵션이기 때문에 생성 자체로는 에러가 나지 않습니다. 그렇기 때문에 프로듀서가 acks=all(-1)로 해당 토픽에 전송시에 에러가 나는 모습을 보실 수 있습니다.

$ bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 --topic test --request-required-acks -1
>a
[2022-07-24 12:40:13,377] WARN [Producer clientId=console-producer] Got error produce response with correlation id 12 on topic-partition test-0, retrying (2 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,493] WARN [Producer clientId=console-producer] Got error produce response with correlation id 13 on topic-partition test-0, retrying (1 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,597] WARN [Producer clientId=console-producer] Got error produce response with correlation id 14 on topic-partition test-0, retrying (0 attempts left). Error: NOT_ENOUGH_REPLICAS (org.apache.kafka.clients.producer.internals.Sender)
[2022-07-24 12:40:13,702] ERROR Error when sending message to topic test with key: null, value: 0 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.NotEnoughReplicasException: Messages are rejected since there are fewer in-sync replicas than required.

2) 컨슈머는 min.insync.replicas=2 옵션을 충족하지 못하는 워터마크 때문에 토픽에서 데이터를 못가져 오는 것인가?

기본적으로 default 옵션일 경우 컨슈머는 min.insync.replicas 기준으로 레코드를 가져오는 것이 아니라 리더 파티션에 존재하는 레코드를 기준으로 컨슘을 진행합니다. 

(이 부분은 강의 수정하였습니다.)

카프카 ISR 개념 부분 질문

0

487

1

카프카 커넥터를 두가지 사용하는 이유

0

909

1

브로커, 토픽, 파티션관계

0

687

1

커넥트(소스), 커넥트(싱크)

1

546

1

카프카 isr 질문 있어요

0

340

1

파티션 질문 있어요

0

393

1

명령어 관련 문의드립니다.

0

436

2

토픽의 레코드가 라운드로빈으로 배정되는 방식 질문있습니다.

0

435

2

레코드에 json 형태의 데이터 넣는법 질문

0

436

2

카프카 도커로 실행

1

447

1

CCDAK 질문입니다!

0

1367

1

스트림즈 조인에 관련해서 질문드립니다.

0

307

1

min.insync.replicas에서 설정값만큼의 브로커 다운시

0

259

1

브로커로 메시지를 보낼때 null값인 경우

0

475

1

zookeeper 실행시 에러

1

788

1

온프레미스 환경 설치에 대해 질문있습니다.

0

358

1

리밸런싱 시, 메시지 중복 처리 문제

0

1074

1

강사님, Idempotence / transaction의 차이가 궁금합니다.

0

377

1

브로커 장애 발생시 질문

0

339

1

에러 핸들링과 관련하여 질문 드립니다

0

316

1

토픽 생성시 파티션이 배치되는 방법

0

367

1

질문있습니다!

0

141

1

카프카 스트림즈 에러 핸들링 질문 드립니다

0

402

1

카프카 클러스터 질문이 있습니다.

0

186

1