카프카 운영하기토픽 작업kafka-topics.sh 사용새 토픽생성: —topic, —repolication-factor(레플리카 수), —partitions (파티션 수)토픽 목록 조회: —list토픽 상세 내역 조회: —describe—under-replicated-partitions: 1개 이상의 레플리카가 리더와 동기화되지 않고 있는 모든 파티션—at-min-isr-partitions: 레플리카 수가 인 싱크 레플리카 수의 최소값과 같은 모든 파티션—under-min-isr-partitions: ISR 수가 쓰기 작업에 성공하기 위한 최소 레플리카 수에 미달하는 모든 파티션 , 이 파티션들은 읽기 전용파티션 추가하기: —alter —topic my-topic —partitions N파티션 개수 줄..
데이터 파이프라인 구축하기카프카는 데이터 파이프라인 단계 사이사이에서 매우 크고 안정적인 버퍼 역할을 해줄 수 있음데이터 파이프라인의 읽는 쪽, 쓰는 쪽을 분리함으로써 하나의 원본에서 가져온 동일한 데이터를 다른 적시성 / 가용성 요구 조건을 갖는 여러 대상 애플리케이션이나 시스템으로 보낼 수 있음데이터 파이프라인 구축 시 고려사항적시성좋은 데이터 통합시스템은 시스템의 각기 다른 적시성의 요구 조건을 지원해야 하고 요구 조건이 변경되었을 때도 유연하게 대처해야 함카프카는 실시간으로 작동되는 데이터 파이프라인부터 배치 작업에 이르는 모든 작업에 사용될 수 있음카프카는 쓰는 쪽, 읽는 쪽 모두 시간적 민감도에 대한 요구 조건을 분리시키는 거대한 버퍼가 될 수 있음 (쓰는 쪽이 어떤 속도로 쓰든 읽는 쪽은 스..
신뢰성 있는 데이터 전달카프카가 보장하는 신뢰성카프카는 파티션 안의 메시지들 간의 순서를 보장클라이언트가 쓴 메시지는 모든 in-sync replica 의 파티션에 쓰여진 뒤에 커밋 된 것으로 간주프로듀서는 acks 설정에 따라 메시지가 커밋된 다음 응답이 올지, 리더에만 쓰여졌을 때 응답이 올지, 네트워크 전송된 다음 응답이 올지 결정할 수 있음커밋된 메시지는 최소1개의 작동 가능한 레플리카가 남아있는 한 유실되지 않음컨슈머는 커밋 된 메시지만 읽을 수 있음복제모든 이벤트들은 리더 레플리카에 쓰여지며, 대체로 리더 레플리카에서 읽혀짐다른 레플리카들은 리더 레플리카와 동기화를 맞추며 최신 이벤트를 복사해 감리더 레플리카가 죽을 경우, 인 싱크 레플리카 중 하나가 리더가 됨다음 아래 조건에 따라 in-sy..

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 라는 메타데이터 포함할 수 있으며 데이터를 저장할 파티션을 결정하기 위해 사용됨 카프카는 효율성을 위해 메시지를 배치 단위 로 저장스키마: 메시지의 형식. 카프카는 잘 정의된 스키마를 공유 저장소에 저장함으로써 구버전, 신버전 형식을 동시에 지원하도록 하는 사전 작업 없이도 메시지를 처리할 수 있음토픽과 파티션:카프카에서 메시지는 토픽 단위로 저장. 토픽은 여러개의 파티션 으로 나뉨.각 파티션은 서로 다른 서버에 저장될 수..