Kafka

오픈 소스 분산 이벤트 스트리밍 플랫폼입니다. 

 

kafka는 실시간으로 데이터 스트림을 수집하여 처리하기 위한 플랫폼으로, 메시지 스트리밍 데이터를 쓰고 읽게 해주는 게시(pub)-구독(sub)형 메시징 시스템입니다. 

 

Apache Kafka

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

동작 원리

 

카프카는 3가지 컴포넌트로 구분됩니다.

Producer : kafka에 데이터 입력 클라이언트.
Broker : 중간 역할을 해줄 클러스터.
Consumer : kafka의 데이터를 가져오는 클라이언트.

producer는 이벤트(데이터, record, message)를 게시(쓰기)하는 클라이언트 애플리케이션이고,
consumer는 이벤트를 읽는 애플리케이션입니다.

브로커라는 클러스터에 파일 시스템의 폴더와 같은 ‘topic’을 생성하고,
파일처럼 이벤트를 생성하고 읽는 것이죠.

하지만 하나의 topic에 많은 producer와 consumer가 접근하게 되면, 부하가 걸리고 딜레이가 생길 수 있는데, 이러한 것들 때문에 topic은 n개의 partition으로 분산됩니다.

새 이벤트가 topic에 게시되면 실제로는 topic의 partition 중의 1개에 추가됩니다.

각각의 파티션은 append-only 방식으로 쌓여가는 로그 파일 형태입니다.

offset이라고 불리는 각각의 파티션 내 위치를 의미하는 식별자 정보를 가지고 이벤트를 쓰고 읽을 수 있습니다. 한번 쓰여진 이벤트는 영구적으로 저장됩니다(영속성 보장). 타 메세지 시스템과는 다르게, 읽는다고 삭제되는게 아니라 topic별 구성 설정을 통해 이벤트를 유지하는 기간을 정의하여 삭제 관리합니다.

 

각각의 파티션 내에선 순서가 보장되고, topic 내의 파티션 간의 순서는 보장되지 않습니다.

만약, 특정 이벤트들간의 작동 순서대로 읽고 싶다면, 이벤트 키(파티션 키)를 통해 동일한 파티션에 기록하게 하여 순서를 보장해야합니다.(없으면 라운드로빈 방식으로 파티션을 돌아가며 씀)

 

 

Consumer

컨슈머 그룹은 컨슈머들을 논리적으로 묶은 것입니다. 

컨슈머 그룹 내 리더 컨슈머가 해당 메시지를 누가 읽을건지 선정하고 나머지 컨슈머는 해당 메시지를 읽지 않습니다.

카프카의 특징

 

1) 카프카는 브로커라 불리는 하나 또는 그 이상의 서버들로 이루어진 클러스터로, 토픽의 파티션들을 여러 브로커에 배포합니다.
이로 인해, 하나의 토픽을 여러 consumer에 의해 동시 처리가 가능하고, 서로 다른 브로커에 있는 파티션에 접속함으로써 메시지 처리량을 높일 수 있습니다.

2) 카프카는 복사정책으로 여러 브로커에 동일 파티션의 복사본(replica)을 3개 이상 유지합니다.
이를 통해 1개의 브로커가 장애가 발생해도 복사본을 통해 지속적으로 메시지 제공이 가능합니다.

3) 카프카는 컨슈머 리더쪽에서 현재 구독중인 파티션 할당 정책을 담당합니다.
broker에서 관리안하고 컨슈머쪽에서 관리하는 이유는  broker를 재시작할 필요 없게 하여 유연성과 확장성을 가지게 됩니다.

 

 

'Kafka' 카테고리의 다른 글

Kafka 모니터링 추천  (0) 2023.04.18
Kafka 좀 더 알아보기  (0) 2023.04.17

+ Recent posts