저번 시간에 이어, 이번에는 아파치 카프카에서 클라이언트 메타데이터와 브로커의 통신에 대해 알아보겠습니다. 카프카 클라이언트는 통신하고자 하는 리더 파티션의 위치를 알기 위해, 브로커로부터 메타데이터를 전달받습니다.
카프카 프로듀서 메타데이터 옵션
- metadata.max.age.ms: 메타데이터를 강제로 Refresh하는 간격을 의미하며, default는 5분입니다.
- metadata.max.idle.ms: 프로듀서가 유휴상태일 경우 메타데이터를 캐시에 유지하는 기간이며, default는 5분입니다
클라이언트 메타데이터에 이슈가 발생한 경우
카프카 클라이언트는 반드시 리더 파티션과 통신을 합니다. 하지만, 메타데이터가 리더 파티션의 상태에 맞게 Refresh되지 않은 상태에서, 위 사진과 같이 잘못된 브로커로 데이터를 요청하면 LEADER_NOT_AVAILABLE Exception이 발생합니다. LEADER_NOT_AVAILABLE은 클라이언트(프로듀서 or 컨슈머)가 데이터를 요청한 브로커에 리더 파티션이 없는 경우 발생하며, 대부분 Refresh 이슈인 이유로 Refresh 간격을 학인하고 클라이언트가 정상적인 메타데이터를 가지고 있는지 확인해야합니다.
마치며
지금까지 Apache Kafka의 기초 개념들에 대해 알아보았습니다. 전체적인 아키텍처를 그려보며, 틀을 잡았다고 생각하시면 될 것 같습니다.
다음 시간에는 카프카 클러스터를 운영하는 방법에 대해 알아보겠습니다.
답글 남기기