카프카의 개념
카프카는 분산형 데이터 스트리밍 플랫폼 입니다.
여기서 분산형은 단일 서버에서 처리를 집중시키는 것이 아닌 여러 대의 서버(노드)로 구성된 클러스터 환경에서 데이터를 처리 할 수 있는 것을 의미하고
스트리밍은 DB 에 정적인 형태로 누적되는 데이터가 아니라, 실시간으로 연속해서 들어오고 흘러가는 데이터 흐름을 의미합니다.
카프카 단어 목록
프로듀서
프로듀서는 메세지를 생산하는 어플리케이션 혹은 서비스 입니다.
프로듀서는 메세지를 클러스터에 보내며, 이때 특정 토픽을 지정합니다.
메세지
보내지는 메세지 입니다. 예를 들면 Json
토픽
메세지를 보낼 논리적 파이프라인(관)이라고 생각하면 됩니다.
프로듀서가 특정 토픽으로 메세지를 보내면, 컨슈머는 해당 토픽에서 메세지를 읽어 갑니다.
클러스터
서버 == 브로커
카프카는 1대의 브로커가 아닌 여러 대의 브로커들이 모여 하나의 클러스터를 이룹니다.
각 브로커는 하나의 프로세스로 동작하는 카프카 인스턴스이며, 물리적 서버나 컨테이너 형태로 구성됩니다.
클러스터 내 각 브로커는 토픽을 파티션 단위로 나누어 저장합니다. 그리고 이 데이터를 유지합니다.
브로커
카프카 서버의 핵심 단위, 하나의 노드라고 봐도 됩니다.
토픽은 논리적인 개념이고, 토픽은 여러개의 파티션으로 나뉩니다. 각 파티션은 클러스터 내 여러 브로커에 분산 저장 됩니다.
예를 들어 TopicA 가 파티션 3개로 나뉘어져 있다면 이 세개의 파티션은 각각 Broker 1 Broker 2 Broker 3 에 저장됩니다.
파티션
토픽을 물리적으로 나누는 단위입니다.
파티션은 로그를 순서대로 쌓아둡니다.
여러 파티션을 두면 병렬 처리가 가능해져 높은 처리량을 확보할 수 있습니다.
파티션은 복제를 통해 장애가 발생 했을 때 복제 파티션을 리드 파티션으로 승격 시켜 장애를 복구합니다.
정확히는 Leader Replica, Follower Replica 라고 합니다.
컨슈머
컨슈머는 메시지를 소비하는 어플리케이션 또는 서비스입니다.
컨슈머는 클러스터로 부터 메세지를 읽어가는데, 어떤 토픽으로 부터 데이터를 가져올지 결정합니다.
다수의 컨슈머를 컨슈머 그룹으로 묶어, 라운드 로빈 등 자동 할당이 되어 안정적이고 확장 가능한 소비를 할 수 있습니다.