🧩 Kafka 의 Rack Awareness 를 아시나요?

Kafka 는 초기 버전부터 "broker.rack" 이란 설정을 제공하여,

특정 서버 Rack 전체에 전력이 나가는 장애 상황이 발생하더라도

다른 Rack 에 위치한 Broker Node 에 Replica 를 할당시켜 동작 불능에 빠지지 않게 하는

고가용성의 표본적인 기능을 제공해주고 있습니다.


문제는 이런 기능을 제공하는것까진 좋았는데,

Kafka 는 기본적으로 Leader Replica 에 메세지를 Write 하고 Read 하는 구조이기 때문에

Client 인 Producer 나 Consumer 는 자칫 메세지를 자기와 가깝지 않는 노드와 통신을 하게 되어 성능 이슈를 야기할 수 있습니다.


이를 개선하기 위해 Kafka 버전 2.4 부터 Consumer 설정에 "client.rack" 을 추가하여,

ISR 상태인 Follower Replica 가 있다면 읽을 수 있게 하는 기능이 추가되었지만

이 또한 Consumer 리밸런싱에 관여하는 Partition Assignor 가 Rack 설정을 고려하지 않기 때문에

자신과 Rack 이 동일하지 않는 노드의 파티션 오너쉽을 가져갈 수 있어 완벽한 해결은 아니었습니다.


이와 관련된 내용은 2023년 DEVIEW 때 이동진님께서 발표하신 "네이버 스케일로 카프카 컨슈머 사용하기" 에서도 다뤘었습니다.

📺 네이버 스케일로 카프카 컨슈머 사용하기 : https://tv.naver.com/v/33857687


그러다 드디어 Kafka 3.5 부터 기본적으로 Built-In 되어있는 Partition Assignor 에 해당 기능을 제공하게 되어 Consumer 의 Rack Awareness 가 가능해지게 되었습니다.

이에 대한 내용은 아래 첨부드린 Introducing Apache Kafka 3.5 를 참고해주세요.

📢 Introducing Apache Kafka 3.5: https://www.confluent.io/blog/introducing-apache-kafka-3-5/


다만 지금까지 언급된 내용은 Consumer 에 대한 내용이고

현재까지 Producer 에 대해서는 이렇다할 해법은 존재하지 않습니다.


관련 내용을 검색해보면 Producer 에서 사용하는 Partitioner 를 Customizing 하는 방법(https://levelup.gitconnected.com/rack-aware-partition-assignment-for-kafka-producers-and-consumers-bdf706960491)도 나오지만

여기서 제안한 방법은 동일한 key 값을 가진 message 는 동일한 partition 으로 가야하는 순서보장 법칙을 위배하기 때문에 순서보장이 필요없는 케이스에서만 사용할 수 있습니다.

NAVER D2

Naver

NAVER D2

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 1월 25일 오전 7:08

 • 

저장 14조회 3,398

댓글 0

    함께 읽은 게시물

    GraphRAG 에 대한 생각

    2000년 초반부터 온톨로지 연구를 해왔고, 관심을 갖고 있는 사람으로서 GraphRAG 에 대해 갖고 있는 생각을 적어봤습니다.

    ... 더 보기

    < 서비스를 중독성 있게 만드는 결정적 원리 >

    1. 진통제이면서 비타민이어야 한다.

    ... 더 보기

    Logger 인스턴스 매번 생성하시나요?

    o

    ... 더 보기

    Logger Caching & Performance

    iOYES

    Logger Caching & Performance

    간만에 공개 발표를.. 이번 주 토요일,

    ... 더 보기

    Build with AI 2025 Seoul - 이벤터스

    event-us.kr

    Build with AI 2025 Seoul - 이벤터스

    IT 회사의 업무에서, 지금까지는 디자이너와 특히 개발자가 병목이었는데, 대 AI 시대에는 기획자가 병목이 될 수도 있겠다. 조금이라도 규모가 있는 기업에서의 가장 큰 병목은 보통 의사결정자라는 것을 생각해보면 그렇다.


    즉, 실무보다 의사결정을 AI에게 맡기는 것이 병목을 해소할 수 있는 가장 확실한 방법이며, 그러므로 부장님과 사장님을 AI로 대체하는 것이야말로 인류의 번영을 위한 가장 빠른 지름길이다. (아님. 아니 맞나?!)

     • 

    저장 1 • 조회 2,087


    Longest Common Subsequence 자바스크립트 풀이

    ... 더 보기

    Longest Common Subsequence | 알고달레

    알고달레

    Longest Common Subsequence | 알고달레