전체 글 338

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

Kafka Connect 플러그인 설치 방법

목차 [Kafka Connector 확인하기] Confluent Hub: https://www.confluent.io/hub/ Confluent Hub에는 사용가능한 Connector들을 확인할 수 있다. 사용하려는 connector를 검색한다. 라이센스 확인 Connector 별로 라이센스가 달라서 확인이 필요하다. Apache License, Confluent Community License: 무료이므로 사용상의 제약이 없다. Confluent Support: 유료 라이센스이므로 사용 전 확인이 필요하다. [설치하기] 플러그인을 설치하는 방법은 2가지가 있다. Confluent CLI를 통한 설치 zip파일을 내려받아 connector plugin Path에 직접 옮겨주기 Confluent CLI를 ..

Kafka/Connect 2023.04.22

Kafka Connect 구성요소

목차 [용어 정리] Connect: Connect가 공식명칭으로 카프카로 데이터를 전달하고 읽어오는 스트림 프레임워크를 지칭한다. connect는 connector(task) + transform + converter 형태로 구현된다. Connector: 데이터 스트리밍을 위한 상위 레벨의 추상화. 어디서 어디로 데이터를 내보내는가에 대한 정의 Worker: Connector와 Task가 실행되는 프로세스 Task: 실제로 외부 시스템에 데이터를 전달하기 위한 구현체 Converter: 데이터들을 Connector에서 변환하기 위해 사용하는 것. (Ex: Object → ByteArray) Transform: 각각의 메시지를 요구사항에 맞게 변환하는 단순 로직 Dead Letter Queue: Conne..

Kafka/Connect 2023.04.22

Performance Management

목차 [Client] Producer compression.type: lz4, zstd, gzip 등 제공. 헤더에 압축관련 정보를 함께 실어 전송하게 됨. Latency 최소화를 위한 Default Value batch.size: 16KB linger.ms: 0 buffer size: 32MB Throughput을 늘리고 싶을 때 고려할 만한 옵션 batch.size: 1000KB linger.ms: 100 buffer size: batch size * partition수 보다 크게 설정 Client 성능지표 io-wait-ratio: 이 값이 높다면 브로커에 문제가 있다고 판단 io-ratio: io가 많이 발생한다는 뜻 Producer: 메시지를 보내는 시간이 길다. -> batch size를 늘리..

Kafka 2023.04.16

Broker 내부 구조

Socker Receive Buffer: 네트워크 스레드로 가기전 머무는 버퍼. OS수준에서 제공 Network Thread: 네트워크 관련 처리를 하는 스레드 Request Queue: 네트워크 스레드의 요청이 저장되며 기본적으로 500개의 메시지가 저장된다 I/O Thread: 실제 메시지 처리 스레드. 실제 디스크에 쓰는것이 아니고 Page Cache에 쓴다. Purgatory Area: Page Cache에 쓴 후 잠시 대기하는 곳. 복제가 될 때 까지 대기한다. Response Queue: 처리가 된 메시지들이 머무는 곳. 네트워크 스레드를 거져 Socker Send Buffer로 결과값을 돌려주게 된다. 성능개선 포인트 Socker Buffer Size: 배치 사이즈를 고려하여 튜닝 Threa..

Kafka/Broker 2023.04.16

Ansible 설치하기

목차 Installing Ansible — Ansible Documentation If you are testing new features, fixing bugs, or otherwise working with the development team on changes to the core code, you can install and run the source from GitHub. Note You should only install and run the devel branch if you are modifying ansible-cor docs.ansible.com 위 가이드 문서를 보고 진행한 내용. 기본적으로 Python 설치도 되어 있어야 한다. apt로 설치하면 2.9 이하로 설치되니 그 방식으로..

이것저것 2023.04.15

nGrinder

목차 [Github] https://github.com/naver/ngrinder [Windows에 Controller 구성하기] https://darozzang.tistory.com/entry/window%EC%97%90%EC%84%9C-nGrinder-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89 [전제조건] java 1.8이상 설치되어있는 것이 좋음 아래 명령어로 확인 [Controller 설치] https://github.com/naver/ngrinder/releases경로에서 war 파일 다운로드 Window에서 cmd창 켜고 다운받은 경로에서 아래 커맨드로 실행 $ java -XX:MaxPermSize=200m -jar ngrinder-controller..

이것저것 2023.04.08