분류 전체보기 308

Consumer Error Handling Patterns

목차 Kafka의 에러 핸들링은 보통 Consumer단에서 처리한다고 한다. 이러한 에러를 핸들링하는 패턴들에 대해 정리. [Poison Pill] Poison Pill이란 Consumer가 처리하지 못하는 메시지가 왔을 때를 의미힌다. (Deserializer를 하지 못하는 메시지 형태) M2가 비정상적 메시지라고 하면 M2를 처리하다가 오류가 나고 Consumer가 실패할 것이다. Spring - ErrorHandlingDeserializer 스프링에서는 ErrorHandling Deserializer를 제공하고 있다고 한다. 그래서 이상한 데이터가 들어오면 ErrorHandling Logic의해 처리되고, 정상적인 데이터들만 Consumer로 넘어가게 하는 패턴을 권장한다고 한다. [Error Ha..

Kafka/Consumer 2023.05.09

Schema-Registry Naming Strategy

목차 초기에는 1개의 전략밖에 없었으나 현재는 3개가 존재한다. TopicName Strategy(Default) RecordName Strategy TopicRecordName Strategy TopicName Strategy(Default) 아무것도 설정하지 않을 때 설정. subject명이 "토픽명"-key, "토픽명"-value와 같이 구성된다. ex) order-key, order-value 그래서 Schema-Registry가 활성화된 토픽에 넣고자하면 order-value라는 subject를 찾아가서 처리하게 된다. KsqlDB는 아직까지 TopicName Strategy만 지원하고 있다고 한다. Connect는 Connector마다 지원하는 전략이 다 다르기 때문에 확인이 필요하다. 스키마..

Ubuntu에 Docker 특정 버전 설치하기

Docker 공식 GPG 키를 다운로드. $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - Docker의 stable 저장소를 등록 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 시스템 패키지 인덱스 업데이트 $ sudo apt-get update 설치 가능한 Docker 버전을 확인 $ apt-cache madison docker-ce docker-ce | 5:24.0.0-1~ubuntu.18.04~bionic | https://download.docker.co..

Docker 2023.05.04

Kafka Consumer 성능과 고려 요소들

목차 [Consumer 관련 용어들] Log end Offset: 파티션에 추가된 최신 데이터. producer가 현재 쓰고 있는 위치. 아직은 consumer가 액세스 할 수 없음 High Watermark: 데이터가 모든 Replica에 복제됨. 사용가능한 오프셋 위치 Current Position: consumer instance 개별적으로 관리하는 것. 현재 처리 중인 오프셋 위치 Last Committed Offset: __consumer_offsets 토픽에 저장된 마지막 위치. [Conusmer 주요 파라미터들] fetch.min.bytes: 최소 fetch 용량. 1이면 즉시 불러온다. fetch.wait.max.ms: fetch 최대 대기시간. max.partition.fetch.byte..

Kafka/Consumer 2023.04.23

Kafka Cluster의 성능과 고려요소들

목차 [개요] Produce & Consume의 Request가 어떻게 처리되는지 알아야 한다. 비효율적인 Request가 Broker 성능에 어떤 영향을 줄지 가늠해보아야 한다. Broker의 내부 동작을 알고 있어야 한다. Controller 선출 방법 Broker 장애감지 방법 Controller 장애 후 복구 과정에서 파티션 수가 중요한 이유를 알아야 한다 [Kafka Cluster에 영향을 주는 요소들] Client 설정들 주어진 처리량에 대해 최적화 되지 않은 클라이언트는 필요이상의 request를 생성한다. Kafka는 기본적으로 커넥션을 계속 사용하는 것을 고려해 놓았기 때문에 하나의 요청에 많은 데이터가 오는 방식이 더 적합하다. batch.size, linger.ms의 값을 적절히 설정..

Kafka/Broker 2023.04.23

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

Kafka Connect 클러스터 구성 방법과 리밸런싱

목차 [Connect 구성 방법] Standalone : 하나의 워커(프로세스) 로 구성되어 있어 하나의 프로세스로 모든 작업을 처리하는 커넥트 프레임워크 프로세스 하나 안에 connector + task 로만 이루어져 있음 task개수는 읽고자 하는 토픽 개수 혹은 하나의 태스크가 여러개의 작업을 처리함 하나의 프로듀서와 하나의 컨슈머 그룹 과 동일한 구조 모든 작업이 하나의 JVM에서 처리됨 개발단계 등에서만 사용한다 Distributed : 복수의 워커로 구성되어 있는 커넥트 클러스터 connect instance가 생성되며 얘를 통해 task들을 워커에 골고루 분포시킴 설정한 task 개수에 맞춰 워커에 균등하게 분산시켜줌 group id로 묶어 하나의 커넥트 클러스터로 구성 가능하다 운영환경에서..

Kafka/Connect 2023.04.22