Apache Kafka 공부

#11 클라이언트 메타데이터와 브로커 통신

박태정 입니다. 2025. 2. 16. 18:54
반응형

📡 클라이언트 메타데이터와 브로커 통신

Kafka 클라이언트란? 🤔

Kafka 클라이언트는 Kafka 클러스터와 상호작용하여 데이터를 송수신하거나 명령을 내리는 역할을 한다. 대표적으로 프로듀서(Producer)컨슈머(Consumer) 가 있는데, 프로듀서는 데이터를 생산하고 컨슈머는 데이터를 소비한다.

그런데 클라이언트가 Kafka 클러스터와 제대로 통신하려면 클러스터의 메타데이터(Metadata) 를 알아야 한다. 이 메타데이터를 기반으로 클라이언트는 적절한 브로커(Broker)와 통신할 수 있다.

🗂️ 클라이언트와 메타데이터

Kafka 클라이언트는 먼저 클러스터에 메타데이터 요청 을 보낸다. 이 요청에 대한 응답으로 Kafka 클러스터는 다음과 같은 정보를 반환한다.

  • 리더 파티션(Leader Partition) 위치
  • 브로커 정보
  • 토픽과 파티션 정보

클라이언트는 이 정보를 활용해서 해당 파티션과 직접 통신하게 된다. 그런데 여기서 궁금한 점이 하나 생긴다. 메타데이터는 얼마나 자주 갱신될까? 🤔

⏳ 메타데이터 갱신 관련 설정

Kafka에서는 메타데이터를 갱신하는 두 가지 중요한 설정이 있다.

1️⃣ metadata.max.age.ms

  • 메타데이터를 강제로 리프레시하는 간격을 설정한다.
  • 기본값: 5분(300000ms)
  • 즉, 클라이언트는 5분마다 새로운 메타데이터를 요청하게 된다.

2️⃣ metadata.max.idle.ms

  • 프로듀서가 유휴 상태일 경우, 메타데이터를 캐시에 유지하는 기간을 설정한다.
  • 기본값: 5분(300000ms)
  • 예를 들어, 프로듀서가 특정 토픽으로 데이터를 보낸 후 지정한 시간이 지나면 강제로 메타데이터를 리프레시한다.

이 두 설정이 없다면, 클라이언트는 메타데이터를 갱신할 기회를 놓칠 수도 있다. 그런데 만약 메타데이터가 잘못되면 어떤 문제가 발생할까? 🤔

⚠️ 메타데이터 이슈와 예외 발생

Kafka에서 메타데이터가 정확하지 않으면 심각한 문제가 발생할 수 있다. 예를 들어, 리더 파티션의 위치가 잘못 입력되었을 경우 LEADER_NOT_AVAILABLE 예외가 발생한다.

이런 경우는 보통 다음과 같은 이유에서 발생할 수 있다:

  1. 브로커가 다운되었거나 리더가 변경됨 → 기존 메타데이터가 더 이상 유효하지 않음.
  2. 클라이언트가 메타데이터를 갱신하지 않음 → 오래된 메타데이터를 참조함.
  3. 네트워크 문제 → 클라이언트가 브로커로부터 최신 정보를 받지 못함.

결론적으로, Kafka 클라이언트가 안정적으로 동작하려면 주기적인 메타데이터 리프레시가 필수적 이다.

마무리 🎯

Kafka 클라이언트는 메타데이터를 기반으로 브로커와 통신하며, 이 메타데이터가 올바르게 관리되지 않으면 심각한 문제를 초래할 수 있다. 따라서 metadata.max.age.msmetadata.max.idle.ms 설정을 적절하게 조정하는 것이 중요하다.

반응형