본문 바로가기
카프카

카프카 클러스터

by 정재익 2026. 4. 2.

카프카는 고가용성 메시지 시스템으로 분산 복제 구조를 지향한다.

카프카는 클러스터를 항상 전제한다. 클러스터는 브로커들의 집합이다.

 

브로커

실질적인 서버 클러스터 내의 서버 인스턴스

브로커는 발행자 수신자의 요청 처리 및 메시지를 저장하고 관리한다.

브로커 내부에는 파티션이라는 작은 단위가 있다.

 

토픽

토픽은 여러개의 파티션을 포함하고 여러개의 브로커에 걸쳐있을 수 있다.

카프카에 발행되는 메시지가 기록되는 논리적인 단위이다.

생산자 소비자는 토픽단위로 송수신한다.

 

파티션

파티션은 토픽이라는 논리적인 영역안에 구성되고 메시지가 저장되는 물리적인 단위이다.

파티션에 메시지를 저장하고 관리 함

파티션은 메시지가 실질적으로 저장되는 물리적인 단위이다.

파티션을 논리적 단위로 묶은 토픽이 있다.

파티션 안에서는 시간 순서가 보장 됨 토픽 전체에서는 시간 순서가 보장이 안된다

그러나 소비자는 여러 파티션에서 가져가기 때문에 소비자 입장에서는 시간 순서가 보장이 안됨

 

메시지 순서 보장

일반적으로 키를 사용해서 메시지를 파티션에 매핑한다.

키는 해시를 사용하는 원리다.

 

예를들어 삼성을 키 값으로 메시지를 발행하고 LG를 키 값으로 메시지를 발행하면 종목별로 메시지의 시간순서가 보장된다.

채팅방 ID를 키 값으로 메시지를 발행하면 채팅방별 채팅 메시지의 시간 순서가 보장된다.

 

파티션 개수 설정

시스템 규모

규모가 크면 단일 파티션으로 메시지 처리 성능 저하

규모에 따라 많은 파티션과 많은 컨슈머를 두어 메시지 병렬 처리가 필요하다.

 

키 종류 고려

키 종류에 따라 파티션 개수 설정 필요하다

키의 종류가 적으면 파티션이 많아도 몇몇 파티션에만 메시지가 쌓인다

 

미래 확장

미래 확장을 고려하여 초기에는 여유있는 파티션 세팅

키 값을 사용하는 토픽이면 추후 파티션 변경이 구조적으로 어려움

 

메시지

JSON, XML, 단순 문자열 등의 특정 형태 구조

메시지의 기본 크기는 1MB 늘리고 싶으면 별도 설정 필요

 

세그먼트는 파티션 안에 저장되는 물리적 파일 단위다

각 메시지는 파티션 안에 세그먼트 단위로 append 되다가 세그먼트가 꽉 차면 다음 세그먼트가 생성되고 다음 세그먼트에 적재됨

카프카는 세그먼트 단위로 일정시간을 두고 삭제처리를 수행한다 디폴트는 7일이다.

 

에이브로는 바이너리 기반 메시지 전송으로 성능이 빠른 카프카의 데이터 구조며 표준 스키마를 제공한다.

JSON은 생산자 소비자가 데이터의 구조를 맞추지 않으면 에러가 발생한다.

에이브로는 사전에 정의된 스키마에 따라 데이터 구조를 자동 생성하거나 직렬화 및 역직렬화시 해당 스키마를 기반으로 타입을 강제한다.

 

Zookeeper

주키퍼는 분산아키텍처를 위한 코디네이션 서비스다.

주키퍼는 카프카 클러스터에 있는 모든 브로커들의 상태 정보를 관리한다. 어떤 브로커가 활성인지 다운인지 확인한다.

카프카 클러스터의 구성 정보를 동기화하고 이 정보가 클러스터 전체에서 일관되게 유지되도록 보장한다.

카프카 3버전부터는 자체 메타데이터 관리 모드가 제공되어 카프카에서는 주키퍼 제거를 권고한다.

 

 

'카프카' 카테고리의 다른 글

카프카 프로듀서와 컨슈머  (0) 2026.04.02
카프카의 특징  (0) 2026.04.02