diff --git a/README.md b/README.md index d4438a7..12af4f7 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ > 현재는 글을 작성중이기에 아직은 페이지가 나오지 않습니다! > -### 개요 +## 개요 -#### 배경 +### 배경 이전의 글인 [Kafka Selector: NetworkReceive / Application Buffer for SSL](https://blog.pricelees.me/kafka-selector-4/) 마무리 부분에서 언급한 다음의 내용을 테스트합니다. @@ -17,7 +17,9 @@ 테스트 결과는 Kafka Selector에서 측정되는 메트릭을 기반으로 분석하며, Selector 메트릭 중 일부 메트릭이 '어떻게' 측정되는지 함께 알아봅니다. -#### 테스트 과정 +
+ +### 테스트 과정 1. **1개의 Controller, 3개의 Broker 구조의 KRaft 모드**로 실행합니다. 2. **3개의 워커 스레드를 사용하는 1개의 컨슈머 애플리케이션**을 실행합니다. 컨슈머 애플리케이션은 Spring Kafka를 사용하지 않고, **SpringBoot + Apache Kafka Client로 구현**하였습니다. @@ -29,16 +31,20 @@ - 각 토픽에 들어가는 레코드는 수정할 수 있습니다. (방법은 아래에 작성합니다.) -### 환경 +--- + +## 환경 - **주의: 테스트 실행 전 java, docker 설치는 반드시 되어있어야 합니다.** - Java 17 + Springboot 3.5.3 + Apache Kafka Client 3.9.0 버전을 사용하며, 모든 애플리케이션은 Docker 컨테이너에서 실행됩니다. - 모든 카프카 설정(max-poll-records 등)은 `src/main/resources/application.yml`에서 확인하실 수 있으며, 수정 역시 가능합니다. - **MacOS**(Macbook M1 pro) 및 **Ubuntu(24.04 LTS)** **환경에서는 정상 동작**함을 확인하였습니다. -### 실행 방법 +--- -#### 사용 포트 +## 실행 방법 + +### 사용 포트 테스트를 진행하기 전에, 아래의 포트가 사용중인지 확인이 필요합니다. @@ -46,7 +52,9 @@ 2. Kafka에서는 **7071**, **7072**, **7073**, **29092**, **29093**, **39092**, **39093**, **49092**, **49093** 포트를 사용합니다. 3. Grafana는 **3000**, Prometheus는 **9090**, Kafka UI는 **8000** 포트를 사용합니다. -#### 테스트에 사용되는 레코드 수 수정 +
+ +### 테스트에 사용되는 레코드 수 수정 `org.study.consumerssl.data.TestUtils` 클래스의 아래 값을 수정하여 레코드 수를 조정할 수 있습니다. 제 환경에서는 300만개의 레코드를 추가할 때 평균 10초 정도 소요됩니다. ```java @@ -56,7 +64,9 @@ public class TestUtils { } ``` -#### 실행 - 본문의 내용과 동일한 환경 +
+ +### 실행 - 본문의 내용과 동일한 환경 아래의 자동화 스크립트(./run.sh)를 실행하여 본문의 내용과 동일한 테스트를 실행할 수 있습니다. 시간은 제 환경에서는 7분정도 소요됩니다. @@ -71,13 +81,15 @@ cd understanding-kafka-consumer ![console.png](console.png) -### 출처 및 상세 내용 +--- -#### JMX Metrics +## 출처 및 상세 내용 + +### JMX Metrics 1. Kafka Client 에서 사용하는 jmx 메트릭 설정 파일은 https://blog.voidmainvoid.net/476 의 내용과 동일합니다. 2. Kafka Broker 에서 사용하는 jmx 메트릭 설정 파일은 https://github.com/oded-dd/prometheus-jmx-kafka/tree/master 의 내용과 동일합니다. -#### Grafana Dashboard +### Grafana Dashboard 1. 컨슈머 대시보드는 [Redpanda Kafka Java Consumer](https://grafana.com/grafana/dashboards/18133-kafka-java-consumer/) 를 바탕으로 현재 환경에 맞게 수정하였으며, **"Selector Metrics"** 카테고리의 대시보드는 직접 구성하였습니다. 2. 본문에서 다루지는 않을 예정이나, Springboot 대시보드는 [Spring Boot 2.1 System Monitor](https://grafana.com/grafana/dashboards/11378-justai-system-monitor/), Kafka Producer 대시보드는 [Redpanda Kafka Java Producer](https://grafana.com/grafana/dashboards/22164-kafka-producer-metrics/) 를 바탕으로 현재 환경에서 동작하도록 일부 수정하였습니다.