Kafka-single cluster 실습

ball·2024년 8월 11일

Message Broker

Kafka는 메세지 브로커이다. 대형 프로젝트의 구조가 Monolithic에서 Microservice으로 바뀌면서 서비스들의 상호작용이 점점 복잡해지고 있다. 그러한 복잡성을 해결하기 위해 메세지 브로커를 사용한다.

실습

Kafka-tutorial code을 Github에서 받은 이후, 실습을 진행하면 된다.

위 실습을 만들면서 헷갈렸던 점들을 적어보려고 한다.

Listener, Advertising Listener

docker-compose.yml에 수많은 설정들이 존재한다. 그중에서 2개의 설정이 헷갈렸다.

KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:39094

KAFKA_CFG_LISTENERS는 컨테이너의 몇번 포트에서 서비스를 실행시킬지 설정하는 부분이다. 이때, Kafka controller는 9093 포트에서 실행시키고, client와 연결할 endpoint는 9092, 9094 포트에 있다.

Kafka-client들이 Kafka에 연결하기 위해서는 우선 대표 서버에 메타데이터를 요청한다. Kafka cluster을 사용하면 topic에 따라 서버 주소가 달라질 수 있기 때문이다. 이 메타데이터에서 사용될 Kafka 서버주소가 KAFKA_CFG_ADVERTISED_LISTENERS가 되는것이다.

우리는 위 그림과 같이 아키텍쳐를 설정했다. producer와 consumer가 모두 host machine 상에 존재하기 때문에 Kafka-client들은 모두 localhost:39094 주소를 이용해 Kafka-server에 접근할 수 있다. 따라서 External에 대한 advertising listener는 localhost:39094로 설정하면 되는 것이다.

profile
KAIST CS Major

0개의 댓글