[Kafka 이론] 7. Kafka Brokers

클러스터란? 부트스트랩 브로커란? 수평적 스케일링이란?
카프카 or 카프카 클러스터 : 아파치 프로젝트 애플리케이션으로 여러 대의 브로커를 구성한 클러스터 Apache Kafka 클라이언트가 클러스터에 연결하기 위한 시작점으로 사용할 수 있는 브로커 목록 서버 수를 늘리거나 줄이는 방식으로 시스템을 확장하는 것을 말한다. 로드 밸런싱을 사용하여 작업 부하를 여러 서버로 분산시키는 것이다. 이 방식은 리소스 사용률을 높이고, 서버 간의 작업 부하를 고르게 나누어 진행함으로써 성능을 개선할 수 있다.

Kafka Brokers

카프카 클러스터는 다수의 카프카 브로커들로 구성되어 있다. 브로커가 의미하는건 그냥 카프카 서버를 의미한다. 브로커라고 불르는 이유는 그게 중간책 역활로 데이터를 가로채서 받고 보내고 하기 때문에 카프카에서 브로커라고 부른다.

  • 브로커는 ID로 식별하고, ID는 정수로 이루어져 있다.
  • 각각의 브로커에는 특정한 토픽 파티션만 담긴다.
  • 데이터는 모든 브로커에 걸쳐 분산 된다.

카프카에 아주 특이한 점

어떤 카프카 브로커에 접속한 뒤에 부트스트랩 브로커에 연결한뒤 클라이언트 또는 프로듀서 또는 컨슈머는 전체 카프카 클러스터에 연결되고, 연결하는 방법을 알고 있기 때문에 사용자는 아무것도 하지 않아도 카프카 클라이언트에 스마트한 매커니즘이 자동으로 처리해준다.

  • 사용자는 클러스터의 모든 브로커를 미리 알고 있을 필요가 없다.
  • 한 브로커에 연결하는 방법을 알면 클라이언트가 자동으로 나머지에 연결된다.
  • 카프카 클러스터를 원하는 만큼 브로커로 구성할 수 있다. 브로커는 3개로 시작하는게 좋다.

브로커와 카프카 토픽, 그리고 파티션이 어떤 관계에 있을까?

토픽 파티션
A 3
B 2

스크린샷 2023-08-26 오후 12.02.16.png

  • 파티션이 브로커에 분산되어 배치되어 있다. 브로커103에 아무것도 없는 이유는 B의 파티션이 이미 모두 할당되었기 때문이다.
  • 데이터와 파티션이 모든 브로커에 걸쳐서 분산 처리 되고 카프카 스케일을 이룬다.
  • 수평적 스케일링이라고 부른다.
  • 브로커는 모든 데이터를 갖는 게 아니고 가져야 할 데이터만 갖는다.

브로커 매커니즘

스크린샷 2023-08-26 오후 12.09.08.png

클러스터에 잇는 각각의 카프카 브로커를 부트스트랩 서버라고 부른다. kafka 클러스터에 5개의 브로커가 있다면 모든 브로커가 부트스트랩 서버다.

  • CLI나 Java와 같은 프로그래밍을 사용할 때 부트스트랩 서버 인수가 돌아오는걸 확인할 수 있다.
  • 카프카 클라이언트는 브로커 101에 대한 연결을 개시하고 메타데이터를 요청한다. 성공하면 브로커 101은 클러스터 안에 있는 모든 브로커의 리스트를 리턴하게 된다. 실제로 어떤 브로커가 어떤 파티션을 갖는지 등 더 많은 데이터를 리턴하게 된다.
    • 모든 브로커 리스틀르 통해 데이터를 생산하거나 소비하기 위해 필요한 브로커에 연결할 수 있게 된다.
  • 카프카 클러스터에 있는 모든 브로커는 상당히 스마트하게 모든 브로커, 모든 토픽, 모든 파티션을 알고 있다. 결과적으로 모든 브로커는 카프카 클러스터의 모든 메타 데이터(일관된 구조화된 정보) 정보를 갖고 있다는 의미다. 클라이언트는 이렇게 카프카 클러스터에 접속한다.
LIST