kafka

    Kafka Partition Replication, ISR 그리고 Producer Acks

    Kafka Partition 복제 Kafka 에서는 가용성을 위해 replication 을 제공한다. 이 때 kafka 에서 replication은 각 Topic 의 partition 들을 다른 브로커들로 복제하는 것을 말한다. topic 생성 시, replication 수를 지정할 수 있으며, replication-factor option 값을 지정하여 설정 (default.replication.factor = 1) 이 때, replication-factor 의 경우, broker(node) 수를 넘지 못한다. ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --replication-factor 3 --partitions 3 --topic sample..

    Kafka Streams

    kafka streams - kafka 에서 공식적으로 지원하는 라이브러리 토픽에있는 데이터를 낮은 지연률로 빠른 속도로 데이터 처리 가능 장점 1. 카프카와의 호환성 카프카의 버전정보에 대해 다른 툴들은 완벽한 호환성을 제공하지 않지만 카프카 스트림즈는 카프카 호환성을 걱정하지 않아도 된다. 유실과 중복 처리 방지에 대한 완벽한 기능을 제공하고 있다. 2. 스케줄링 도구가 필요없다 스파크 스트리밍과 연동해서 사용한다면 마이크로 배치 서비스를 구축 할 수 있지만 이를 위해 클러스터 관리자, 리소스 관리자가 필요하고 또한 서버들도 필요합니다. 하지만 Kafka Streams는 다른 것 필요없이 스트림즈 어플리케이션만 가지고 사용할 수 있습니다. 3. 스트림즈 DSL , 프로세서 API 제공 많은 기능들을 ..

    kafka - Consumer

    Consuemr는 데이터를 가져가도 kafka 내에서 데이터가 사라지지 않음 -> 아주 유용한 유연성을 제공 Consumer 의 역할 - topic의 파티션으로부터 데이터 polling - partition offset 위치 기록(커밋) - Consumer 그룹을 통해 병렬 처리 # 토픽 파티션에서 레코드 조회 prop - 옵션 설정 변수 group 1 - > 컨슈머 그룹 설정 consumer.subscribe - 읽을 토픽 설정 polling 루프 - poll 메서드가 포함된 무한 루프 poll() 설정한 시간동안 기다리고 데이터를 가져온다 이 때 데이터가 없다면 그냥 빈값을 반환 가장 작은 단위 : record # 파티션 - 그룹 단위 할당 파티션의 개수보다 컨슈머의 개수가 많아지면, 컨슈머는 놀게된..

    kafka - Producer

    토픽에 데이터를 생성하는 역할 특정 토픽으로 데이터를 publish (전송) 브로커에게 전송하며 처리 실패 / 재시도 라이브러리 명시에 버전을 주의할 것 - 모든 버전의 하위호환성이 완벽하지 않다. 프로듀서 생성 및 send 코드 bootstrap.servers 설정시 이 때 반드시 2개이상의 브로커정보를 넣어주는 것이 장애 발생시 대처가 가능하다. key 직렬화 - Byte array String, Integer Serializer 설정 가능 이 때 토픽에 메시지를 보내는 방법 2가지 key 를 포함하여 보내기 - key 값 기준 파티션 선정 중간에 파티션이 늘어나게 되면, 키에 대한 매핑이 깨지기 때문에 규칙이 깨진다. key 포함하지 않고 보내기 - RR 방식으로 전송 전송이 완료되면 .close(..

    Kafka의 구조

    특징 : 대용량 실시간 처리에 특화 기존의 메시지를 메모리에 저장하는 메시징 시스템과 달리 파일에 저장을 통해 재시작해도 메시지 유실 우려가 적음 컨슈머(Consumer)가 브로커(Broker)에게 메시지를 직접 가져가는 Pull 방식으로 동작 따라서 컨슈머의 처리 능력만큼 메시지를 가져옴 -> 최적의 성능 카프카의 구성 요소 # Topic / Partition topic : 카프카에 저장되는 메시지의 대분류 단위 (메시지를 구분하는 단위 - 파일시스템의 폴더) Partition : Topic 은 여러 patition 으로 나눠진다. ( 한 개의 토픽은 한 개 이상의 파티션으로 구성 - 메시지를 저장하는 물리적 파일) - (partition 내에는 상대적 위치의 offset을 통해 메시지의 위치 정보를 ..