KafkaProducer Client InternalsKafka Producer Client는 3가지 요소로 구성KafkaProducer: send() 를 호출함으로써 Record 를 전송RecordAccumulator: send() 를 호출하면 Record 가 바로 Broker에 전달되는 것이 아니라, RecordAccumulator 에 우선 저장됨. Broker 에 전달되는 것은 비동기 적으로 이루어짐Sender: 별도의 Sender Thread를 생성RecordAccumulator 에 저장된 Record를 Broker 로 전송하는 역할을 함Broker 응답 받으면 사용자가 설정한 콜백이 있으면 실행하고, Broker 로부터 받은 응답 결과를 Future 통해서 전달함KafkaProducer// cr..
컨슈머와 컨슈머 그룹컨슈머는 카프카에서 토픽을 구독하고 구독한 토픽들로부터 메시지를 받는 주체주로 여러 개의 컨슈머가 같은 토픽으로부터 데이터를 분할해서 읽어옴카프카 컨슈머는 보통 컨슈머 그룹 의 일부로서 작동하고, 동일한 컨슈머 그룹에서 여러 개의 컨슈머들이 동일한 토픽을 구독할 경우 각각의 컨슈머는 해당 토픽에서 서로 다른 파티션의 메시지를 받게 됨 (출처: https://medium.com/codex/apache-kafka-series-part-2-partitions-consumer-group-and-offset-management-fbb08839edfa)컨슈머 그룹에서 컨슈머를 추가하면 토픽에서 읽어오는 데이터 양을 확장할 수 있게 됨만약 카프카 컨슈머가 지연시간이 긴 작업을 수행하고 현재 컨슈머..
프로듀서프로듀서 개요애플리케이션에서 카프카에서 메시지를 써야 하는 상황들성능 메트릭 기록로그 메시지 저장센서 정보 수집 ..각 case 마다 throughput, latency가 다름카프카에서 메시지를 쓰는 작업(=produce)는 어떻게 이루어질까?ProducerRecord 객체 생성 : topic, value 필수 지정 (partition 과 key는 선택 사항)객체를 byte 배열로 직렬화partitioner 가 파티션을 결정함보통 기준은 ProducerRecord 객체의 키 값키 값이 지정되지 않았을 경우 random프로듀서는 이 레코드를 같은 토픽 파티션으로 전송될 레코드를 모은 record batch 에 추가, 이 record batch 가 카프카 브로커의 partition leader 에게 ..
카프카 시작하기일반화된 유형의 데이터를 발행하고 구독할 수 있는 중앙 집중화된 시스템카프카는 분산 커밋 로그 로, 저장된 데이터는 순서가 유지되고 지속성 있게 보관되며 결정적으로 읽을 수 있고, 데이터를 분산시켜 저장할 수 있음 카프카 기본 구성 요소메시지: 데이터 기본 단위. key 라는 메타데이터 포함할 수 있으며 데이터를 저장할 파티션을 결정하기 위해 사용됨 카프카는 효율성을 위해 메시지를 배치 단위 로 저장스키마: 메시지의 형식. 카프카는 잘 정의된 스키마를 공유 저장소에 저장함으로써 구버전, 신버전 형식을 동시에 지원하도록 하는 사전 작업 없이도 메시지를 처리할 수 있음토픽과 파티션:카프카에서 메시지는 토픽 단위로 저장. 토픽은 여러개의 파티션 으로 나뉨.각 파티션은 서로 다른 서버에 저장될 수..