solve-my-curiosity

Kafka 기본 개념 (1) - Broker, KRaft Controller, Schema Registry 본문

Kafka

Kafka 기본 개념 (1) - Broker, KRaft Controller, Schema Registry

curiosity314 2025. 6. 11. 21:10

카프카는 메세지 큐 시스템을 구현해놓은 오픈소스이다. 

Kafka

일단 공부할 컴포넌트는

 

Kafka Broker

KRaft Controlelr

Embedded Rest Proxy

Schema Registry

Connect

Control Center

jmx exporter

총 7개 이다. 


Kafka Broker는 Producer <-> Broker <-> Consumer를 잇는 메세지 중개자. 이름 그대로이다. 브로커 클러스터들끼리 통신하면서 Partition을 가지고 Replicas를 가지면서 고가용성을 유지한다. 

 

KRaft Controller는 Kafka Metadata를 가지는 컨트롤러이고 여러개의 Kafka Broker들 중에서 하나의 브로커만 Controller 역할을 한다. (Raft Algorithm이 내부적으로 돌아가는 듯) 

KRaft Controller 이전의 ZooKeeper방식
KRaft Controller / active인 Controller가 KRaft Controller역할

Kafka Metadata에는 

- Topic 정보

- Broker 목록

- Partition 정보

- ISR 정보

- 컨슈머 그룹

- ACL 

 

등이 있다 

 

Kafka Broker는 메세지를 바이너리 형태로 저장하기 떄문에 (bash로 들어가서 od -sc로 확인해야한다 -> 메세지의 형식을 중앙에서 관리해줘야 한다. 그 역할이 바로 Schema Registry

스키마 아이디 저장하고

직렬화하고

발행하고

소비하고

스키마 가져오고

역직렬화하고

 

이 순서로 간다. 

그럼 의문점이 든다. 

컨슈머는 어떤 schema를 가져와서 역직렬화를 해야하는지 어떻게 알까?

Kafka Message의 구조는 

[magic byte][schema ID][serialized payload]

다음과 같다. 

구성 크기 설명

magic byte 1 byte 보통 0, 포맷 식별 용
schema ID 4 bytes Schema Registry에 저장된 ID
payload N bytes 실제 직렬화된 데이터

schema ID의 바이트를 토대로 어떤 schema로 읽어야하는지 알 수 있다.