Apache Kafka - Broker, Zookeeper

현시기얌·2022년 2월 10일
0

Apache Kafka

목록 보기
3/12

Broker, Zookeeper

  • Apache Kafka는 ZooKeeper라고 하는 컴포넌트들과 Cluster로 구성되어 있고 Kafka Cluster 내에는 여러개의 Broker들로 구성되어 있다.

Broker

  • Kafka Broker : Topic과 Partition에 대한 Read 및 Write를 관리하는 소프트웨어다.
  • Kafka Server라고 부르기도 한다.
  • Topic내의 Partition들을 분산, 유지 및 관리해준다.
  • 각각의 Broker들은 ID로 식별된다.(단 ID는 숫자)
  • Topic의 일부 Partition들을 포함한다.
    --> Topic 데이터의 일부분(Partition)을 가지고 있을 뿐 데이터 전체를 가지고 있지는 않다.
  • Kafka Cluster : 여러개의 Broker들로 구성된다.
  • Client는 특정 Broker에 연결하면 전체 Cluster에 연결된다.
  • 최소 3대 이상의 Broker를 하나의 Cluster로 구성해야 한다. (4대 이상을 권장한다.)

Kafka Broker Id와 Partition Id의 관계

  • Broker ID와 Partition Id 간에는 아무런 관계가 없다.
    --> 어느 순서에나 있을 수 있다.
  • Topic을 구성하는 Partition들은 여러 Broker 상에 분산된다.
  • Topic 생성 시 kafka가 자동으로 Topic을 구성하는 전체 Partition들을 모든 Broker에게 할당해주고 분배해준다.

BootStrap Servers

  • 모든 kafka Broker는 BootStrap Server라고 부른다.
  • Client(Producer, Consumer)가 Broker에 접속을 할 때 BootStrap Server라는 Parameter를 통해서 접속한다.
  • Client가 특정 하나의 Broker에만 연결을 하면 자동으로 Broker가 Broker 전체 List를 전달해준다.
  • Client는 이 정보를 통해서 내가 접속해야(Read/Write) 하는 Topic 그리고 그 Topic을 구성하는 Partition이 어디에 있는지 알게 되고 Client는 자동으로 자기가 필요한 Broker들로 연결된다.
  • 하지만 특정 Broker 장애를 대비하여 전체 Broker List(IP, Port)를 파라미터로 입력하는 것을 권장한다.

Zookeeper

  • Zookeeper는 Broker를 관리(Broker 들의 목록/설정을 관리) 하는 소프트웨어다.
  • Zookeeper는 변경사항에 대해 Kafka에 알린다.
    --> Topic 생성/제거, Broker 추가/제거 등
  • Zookeeper 없이는 Kafka가 작동할 수 없다. (2022년에 Zookeeper를 제거한 정식 버전 출시 예정중)
  • Zookeeper는 홀수의 서버로 작동하게 설계되어 있다. (최소 3, 권장 5)
  • Zookeeper에는 Leader(writes)가 있고 나머지 서버는 Follwer(reads)다.

Zookeeper 아키텍처

  • Zookeeper는 분산형 Configuration 정보 유지, 분산 동기화 서비스를 제공하고 대용량 분산 시스템을 위한 네이밍 레지스트리를 제공하는 소프트웨어다.
  • 분산 작업을 제어하기 위한 Tree 형태의 데이터 저장소
    --> Zookeeper를 사용하여 멀티 Kafka Broker들 간의 정보(변경 사항 포함) 공유, 동기화 등을 수행한다.
  • 위의 그림을 보면 가운데 있는 Zookeeper Server 2가 Leader 역할을 하고 양쪽에 있는 1,3번은 Follower 역할을 하고 있다.
    Zookeeper는 Kafka에 Broker가 몇대며 Topic이 몇개고 Partition이 몇개인지 같은 정보들을 가지고 있다. 그 정보들을 Leader가 메인으로 가지고 있고 Follower가 복제해서 가지고 있으며 밑에 있는 Broker들 쪽으로 동기화해서 내려주는 구조다.

Zookeeper Failover

  • Ensemble(앙상블)은 Zookeeper 서버의 Cluster다.
  • Zookeeper가 홀수 서버로 작동하게 설계되는 이유는 Quorum 알고리즘 기반 때문이다.
  • Quorum은 "정족수"이며, 합의체가 의사를 진행시키거나 의결을 하는데 필요한 최소한도의 인원수를 뜻한다.
  • 분산 코디네이션 환경에서 예상치 못한 장애가 발생해도 분산 시스템의 일관성을 유지시키기 위해서 사용된다.
  • ex) Ensemble이 3대로 구성되었다면 Quorum은 2, 즉 Zookeeper 1대가 장애가 발생하더라도 정상적으로 동작한다.
    ex) Ensemble이 5대로 구성되었다면 Quorum은 3, 즉 Zookeeper 2대가 장애가 발생하더라도 정상적으로 동작한다.

요약

  • Broker는 Partition에 대한 Read 및 Write를 관리하는 소프트웨어
  • Broker는 Topic내의 Partition들을 분산, 유지 및 관리해준다.
  • 최소 3대 이상의 Broker를 하나의 Cluster로 구성해야 한다.
  • Zookeeper는 Broker를 관리 (Broker들의 목록/설정을 관리)하는 소프트웨어
  • Zookeeper는 홀수의 서버로 작동하게 설계되어 있다. (최소 3, 권장 5)
profile
현시깁니다

3개의 댓글

comment-user-thumbnail
2022년 3월 4일

호오옥시 어디글이나 강의보고 요약정리 하신걸까욤?

1개의 답글