Producer 6

Spring Kafka - Producer

목차 [개요] 스프링 카프카 프로듀서는 KafkaTemplate 이라는 클래스를 사용한다. KafkaTemplate은 ProducerFactory 클래스를 통해 생성된다. KafkaTemplate을 생성하는 방법은 "기본 템플릿" or "사용자 정의 템플릿"을 ProducerFactory로 생성하는 방법이다. [Basic KafkaTemplate] 기본 카프카 템플릿은 application.yaml에 프로듀서 옵션을 넣기만 하면 옵션이 적용된다. spring: kafka: producer: bootstrap-servers: localhost:9092 acks: all enable.idempotence: true retries: 3 .... 예제 기본 템플릿을 통해 "jaeshim-test"라는 토픽에 메..

Kafka/Spring Kafka 2023.05.29

Kafka Producer 성능 테스트, 튜닝

목차 [개요] 카프카에서는 프로듀서 튜닝이 가장 핵심적인 요소이다. Throughput, latency는 프로듀서가 얼마나 효율적인 작업을 하는가에 따라 달라진다. Biz 요구사항을 가장 먼저 파악하고 그에 맞는 성능튜닝을 진행한다. Durability, Availability, Throughput, Latency 의 우선순위를 정해본다. 작은 변화를 위해 설정값을 변경하는 건 권고하지 않는다. 큰 변화일 때만 설정값을 변경한다. : https://www.confluent.co.uk/blog/configure-kafka-to-minimize-latency/ Tail Latency at Scale with Apache Kafka | UK Apache Kafka allows you to achieve bot..

Kafka/Producer 2023.04.22

Performance Management

목차 [Client] Producer compression.type: lz4, zstd, gzip 등 제공. 헤더에 압축관련 정보를 함께 실어 전송하게 됨. Latency 최소화를 위한 Default Value batch.size: 16KB linger.ms: 0 buffer size: 32MB Throughput을 늘리고 싶을 때 고려할 만한 옵션 batch.size: 1000KB linger.ms: 100 buffer size: batch size * partition수 보다 크게 설정 Client 성능지표 io-wait-ratio: 이 값이 높다면 브로커에 문제가 있다고 판단 io-ratio: io가 많이 발생한다는 뜻 Producer: 메시지를 보내는 시간이 길다. -> batch size를 늘리..

Kafka 2023.04.16

Log Compaction

목차 [Topic - cleanup.policy] Kafka는 데이터 리텐션 정책이 2가지 있다. Delete: retention.ms를 지나거나 retention.bytes를 초과하는 경우 오래된 세그먼트를 삭제한다. Compact: Key별로 가장 최근의 value값만 남겨두고 저장한다. [Log Compaction?] Log compaction ensures that Kafka will always retain at least the last known value for each message key within the log of data for a single topic partition.It addresses use cases and scenarios such as restoring state..

Kafka/Producer 2023.03.05

BuiltIn Partitioner

HTML 삽입 미리보기할 수 없는 소스 [BuiltIn Partitioner?] 문제 제기 : https://issues.apache.org/jira/browse/KAFKA-10888?focusedCommentId=17285383&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17285383 업데이트 patch : https://cwiki.apache.org/confluence/display/KAFKA/KIP-794%3A+Strictly+Uniform+Sticky+Partitioner Apache Kafka 3.3 버전에 추가된 것으로 기존 StickyPartitioner를 사용할 때 Broker Networ..

Kafka/Producer 2023.03.05

Kafka Producer Basic Architecture

목차 [기본 동작 방식] [Producer 컴포넌트] PDF파일 (출처: 본인) Overview Record Accumulator Sender Thread [컴포넌트별 상세설명] Serializer 레코드로부터 전달된 Key, Value가 지정된 serializer에 의해 변환된다. Partitoner partitioner에 의해 어떤 파티션으로 보내질 지 결정된다. Key값이 있는 경우 Key의 Hash 값을 이용해서 파티션을 할당한다. Key값이 없는 경우 Stickey 방식으로 할당된다. Compression 전송하려는 레코드를 압축할 수 있다. 레코드는 배치에 채워진 후 그 배치가 압축되어 RecordAccumulator에 저장된다고 한다. Compression.type gzip snappy lz..

Kafka/Producer 2023.03.03