전체 글114 Consumer Fetcher 관련 주요 파라미터와 Fetcher 메커니즘 이해 Consumer Fetcher 관련 주요 파라미터와 Fetcher 메커니즘 이해Consumer Fetcher 프로세스 개요Fetcher는 Linked Queue 데이터를 가져오되, Linked Queue에 데이터가 없을 경우 ConsumerClientNetwork에서 데이터를 브로커로부터 가져올 것을 요청한다. fetch.min.bytesFetcher가 record들을 읽어들이는 최소 bytes. 브로커는 지정된 fetch.min.bytes 이상의 새로운 메시지가 쌓일 때까지 전송을 하지 않는다.기본은 1bytes fetch.max.bytesFetcher가 한번에 가져올 수 있는 최대 데이터 bytes기본은 50MB fetch.max.wait.ms브로커에 fetch.min.bytes 이상의 메시지가 쌓일.. 2025. 5. 15. Kafka Consumer 클래스의 주요 구성 요소와 poll() 메서드 동작 메커니즘 이해 Kafka Consumer 클래스의 주요 구성 요소와 poll() 메서드 동작 메커니즘 이해Kafka Consumer의 주요 구성 요소와 poll() 메서드브로커나 Consumer 내부 Queue에 데이터가 없다면 바로 데이터를 반환. 그렇지 않을 경우에는 1000ms동안 데이터Fetch를 브로커에 계속 수행하고 결과 반환ConsumerRecords consumerRecords = KafkaConsumer.poll(Duration.ofMillis(1000)); Kafka Consumer 구성 poll() 메서드의 동작Linked Queue에 데이터가 있을 경우 Fetcher는 데이터를 가져오고 반환하며 poll() 수행 완료.ConsumerNetworkClient는 비동기로 계속 브로커의 메시지를 가져와.. 2025. 5. 14. Consumer의 주요 메커니즘 개요 Consumer의 주요 메커니즘 개요Kafka Consumer 개요브로커의 Topic 메시지를 읽는 역할을 수행한다.모든 Consumer들은 고유한 그룹아이디 (group.id)를 가지는 Consumer Group에 소속되어야 한다.개별 Consumer Group 내에서 여러 개의 Consumer들은 토픽 파티션 별로 분배된다. Consumer의 subscribe, poll, commit 로직Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록Consumer는 poll() 메서드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 __consumer_offsets에 다음에 읽을 offset 위치를 기재한다. Kafka.. 2025. 5. 13. 최대 한번 전송, 적어도 한번 전송, 정확히 한번 전송 최대 한번 전송, 적어도 한번 전송, 정확히 한번 전송최대 한번 전송 (acks = 0)적어도 한번 전송 (중복 허용, retries > 0, acks = 1 or all)정확히 한번 전송중복 없이 전송 : Producer의 message 전송 retry 시 중복 제거Transaction 기반 전송 : Consumer -> Process -> Producer (주로 Kafka Stream)에 주로 사용되는 Transaction 기반 처리 최대 한번 전송Producer는 브로커로부터 ack 또는 에러 메시지 없이 다음 메시지를 연속적으로 보낸다.메시지가 소실 될 수는 있지만 중복 전송은 하지 않는다.acks = 0 최대 한번 전송 동작 메커니즘 #1메시지 A가 정상적으로 브로커에 기록되고 Ack가 전송된다.. 2025. 5. 12. Producer의 max.inflight.requests.per.connection 파라미터와 배치 메시지의 전송 순서 이해 Producer의 max.inflight.requests.per.connection 파라미터와 배치 메시지의 전송 순서 이해브로커 서버의 응답없이 Producer의 Sender Thread가 한번에 보낼 수 있는 메시지 배치의 개수. 기본값은 5이다. Kafka Producer의 메시지 전송 단위는 Batch이다.비동기 전송 시 브로커의 응답없이 한꺼번에 보낼 수 있는 Batch의 개수는 max.inflight.requests.per.connection에 따른다. Producer 메시지 전송 순서와 Broker 메시지 저장 순서 고찰B0가 B1보다 먼저 Producer에서 생성된 메시지 배치max.inflight.requests.per.connection = 2 (>1)에서 B0, B1 2개의 배치 메시.. 2025. 5. 6. Producer의 전송/재전송 내부 메커니즘 및 전송 동작 관련 주요 파라미터의 이해 Producer의 전송/재전송 내부 메커니즘 및 전송 동작 관련 주요 파라미터의 이해Producer의 메시지 전송/재전송 시간 파라미터 이해max.block.mssend() 호출 시 Record Accumulator에 입력하지 못하고 block되는 최대 시간. 초과 시 Timeout Exception 발생send() 메서드를 통해 Record Accumulator에 입력하는 데 Record Accumulator가 꽉차거나해서 더이상 입력할 수 없을 때 block 되는 최대 시간linger.ms : Sender Thread가 Record Accumulator에서 배치별로 가져가기 위한 최대 대기 시간.request.timeout.ms전송에 걸리는 최대 시간. 전송 재시도 대기시간 제외. 초과 시 retry.. 2025. 5. 5. 이전 1 2 3 4 ··· 19 다음