Docker 컨테이너로 싱글 노드 Kafka 브로커 실행하기

목표 테스트 환경에서 사용할 Kafka 브로커를 컨테이너로 실행하는 방법을 이해한다. Kafka 브로커는 KRaft 모드로 실행하여 ZooKeeper 없이 실행 가능하도록 구성한다. KRaft 모드 KRaft 모드가 존재하기 이전에는 Kafka의 메타데이터를 관리하기 위해 Zookeeper 에 의존했다. 이는 여러 문제점이 존재했다. ZooKeeper의 한계로 인해 클러스터의 확장에 한계가 존재 ZooKeeper 자체로도 하나의 분산 시스템이여서 Kafka를 사용하기 위해 2가지 기술의 학습 필요 이를 해결하기 위해서 KRaft 모드가 Apache Kafka 2.8 버전에서 처음 선보였고, 3.3 버전부터 프로덕션 환경에서 사용 가능한 것으로 발표했다....

2025-08-02 · 3 min · 531 words

KafkaProducer 기본 구성 요소

목표 client에서 KafkaProducer가 메시지지를 produce하는 과정을 이해한다. Spring 에서 KafkaTemplate 호출시 동작 KafkaTemplate.doSend() 메서드 호출시 KafkaProducer.send() 메서드를 내부에서 호출하고 있다. send() 메서드 호출 시 파라미터로 전송할 ProducerRecord와 Callback 파라미터를 넘겨준다. KafkaProducer의 기본 구성 요소 KafkaProducer: 사용자가 직접 사용하는 클래스. send() 메서드를 호출하면 Record를 전송한다. RecordAccumulator: 사용자가 KafkaProducer::send() 메서드를 호출하면 Record가 바로 전송되는 것이 아니라 RecordAccumulator에 저장된다. 그리고 실제로 Broker에 저장되는 것은 이후에 비동기적으로 이루어진다. Sender: KafkaProducer는 별도의 Sender Thread를 생성한다. Sender Thread는 RecordAccumulator에 저장된 Record들을 Broker로 전송하는 역할을 한다....

2024-09-15 · 1 min · 103 words