Broker 5

Topic Naming Convention

목차 [INTRO] 카프카에서의 화두 중 하나는 카프카 토픽의 이름을 어떻게 짓는것이냐이다. 보통 많은 회사들이 기존의 토픽명의 관습에 따라 많이 짓는다고 한다. 아래와 같은 네이밍 규칙이 권장된다. .. -- ... 그리고 chris riccomini는 아래와 같은 네이밍 규칙을 사용하기도 했다고 한다. .. [카프카에서 유효한 토픽명] 카프카에서는 '_', '-', '.' 이며 아래 정규식이 카프카에서 사용할 수 있는 토픽명이다. 하지만 '_','-' 등을 혼용해서 사용할 경우 충돌이 날 수 있기 때문에 혼용하지 않도록 해야한다. legalChars = "[a-zA-Z0-9\\._\\-]" 또한 토픽명은 대소문자를 구분한다. [카프카에서 토픽명을 정할 때 몇가지 지침들] 토픽명의 포맷을 정해라 가장 ..

Kafka/Broker 2023.05.29

Kafka TCP Connection에 대한 정리

목차 [INTRO] 기본적으로 Kafka에서는 active_connection_count라는 메트릭지표로 현재 사용 중인 Connection 수에 대한 지표를 제공한다. 하지만 실제 클라이언트 인스턴스 수 보다 이 값이 높은 경우가 있다고 한다. TCP Connection 수에 대한 정리. librdkafka에 Connection에 대한 내용이 정리되어 있다. librdkafka/INTRODUCTION.md at master · confluentinc/librdkafka · GitHub GitHub - confluentinc/librdkafka: The Apache Kafka C/C++ library The Apache Kafka C/C++ library. Contribute to confluentinc..

Kafka/Broker 2023.05.29

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

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