[Kafka] Zookeeper와 KRaft

jeonghyun yu·2024년 8월 7일
0

Confluent Kafka

목록 보기
4/4

출처 : Confluent Webinar - ZooKeeper와 헤어질 준비가 되셨나요? KRaft와 첫눈에 반하는 시간

Zookeeper, KIP-500, KRaft

Zookeeper

많은 분산 시스템의 과제들을 해결한 프로그램
quorum과 kafka metadata 관리의 역할

KIP-500

카프카 메타데이터 관리 서비스 역할인 주키퍼를 대체하는 kafka의 기능

KRaft

Kafka + Raft Metadata Consensus
주키퍼를 대체할 새로운 메타데이터 협의점(?)
카프카를 좀 더 효율적이고 쉽게 사용할 수 있도록 한다.

Zookeeper

kafka cluster는 컨트롤러로서 동작하는 하나의 single node를 가지는데요. 컨트롤러는 topic partition logs를 적재하고, consume/produce 요청을 다루고, cluster metadata와 보안을 유지하는 역할을 맡습니다. 관련 정보들은 주키퍼에 다시 저장됩니다. 대부분의 주키퍼의 RW 트래픽은 컨트롤러에 의해 수행됩니다.

하지만 kafka community에서 많은 사람들은 metadata를 kafka 내부에 저장해야 한다고 생각하였고..

zookeeper를 관리하는 것은 점점 더 어려워지고 있었습니다.

구조적 복잡함 - 별개의 두 개의 시스템 사이에서 시스템을 관리하는 것은 쉽지 않다.
떨어지는 확장성 - sync를 유지하며 node의 개수를 변경하는 것은 안정성 문제에 있어 이슈가 발생할 수 있다.
단일 실패 지점 - zookeeper에 의존하는 것은 주키퍼에 실패가 발생한 동안 함께 지연이 발생할 수 있게 한다.

with KRaft

이러한 문제들을 개선하기 위하여 KRaft를 도입한다면 Kafka는 더이상 외부의 시스템과 설정하고 관리하지 않고 혼자만으로 작동이 가능해질 것입니다.

KRaft가 제공하는 것들

  • 간단함
    • 단일 시스템에 메타데이터를 통합함으로써 카프카 아키텍처 관리 부담을 덜어줍니다.
  • 확장성
    • 카프카를 여러 파티션으로 확장하여 throughput과 latency를 지원합니다.
  • 탄력성
    • 카프카 신뢰성을 향상시키고 10배 failover 성능을 보여줍니다.

KRaft Mode

KRaft Controllers가 Kafka broker와 분리되어 실행되고, ZK와 컨트롤러를 1:1로 대체합니다.

리소스가 독립적으로 scale될 수 있기 때문에, 가용성과 성능 향상을 이유로 추천받고 있습니다.

KRaft Combined Mode

KRaft Controllers가 카프카 브로커와 같은 프로세스 위에서 실행되고, 컨트롤러와 브로커의 호스트는 공유됩니다.

대부분의 사례에 추천되지는 않지만 필요한 use cases가 있습니다.

0개의 댓글