-
[Apache Kafka]구성요소 이해하기(Cluster, Broker, Topic, Partition, Producer, Consumer, Zookeeper)데이터 엔지니어링/Kafka 2022. 7. 14. 21:02반응형
Kafka 기본 아키텍처
Topic이란?
- Topic은 파티션의 그룹이라고 할 수 있음
- Topic은 카프카 데이터 스트림이 어디에 Publish될지 정하는데 쓰임
- Topic은 파티션들을 모아두는 곳이라고 이해해도 좋음
- Producer는 Topic을 지정하고 Message를 게시
- Consumer는 Topic을 지정하고 Message를 개시(POST)
- Consumer는 토픽으로부터 메시지를 받아옴 카프카의 메시지는 디스크에 정렬되어 저장 되며, 새로운 메시지가 도착하면 지속적으로 로그에 기록
Partition이란?
- Partition은 요청하는 메세지들의 모임이라고 보면된다.
- Partition마다 commit log가 따로 쌓인다.
- 모든 기록들은 Offset이라는 ID를 부여받는다. Immutable(불변) 속성을 갖는다.
Message란?
- 카프카의 메시지는 Byte의 배열이다.
- String, Json Avro를 주로 사용한다.
- 메시지 크기에는 제한이 없지만, KB바이트에서 해결하기를 권장
- 데이터는 사용자가 지정한 시간만큼 저장(Retention Period) 이 된다. 기간이 지나면 자동으로 삭제
- 파티션에 들어가는 최소단위라고 보면 좋음
아래 그림은 Topic, Partition, Message처리 방식
Cluster
- 클러스터는 여러개의 카프카 브로커(서버)를 가질 수 있다.
- 토픽을 생성하면 모든 카프카 브로커에 생성된다.
- 파티션은 여러 브로커에 걸쳐서 생성된다.
- Producer가 메세지를 게시하면 Round-Robin방식으로 파티션에 분배된다.(Key를 지정하지 않을때)
- 브로커는 ReplicationFactor를 조절 할 수 있다. Replication Factor를 2로 지정하면 Topic에 나눠서 한번 씩 담기게 되는 구조를 가진다. 이 중에 한 브로커(서버)가 없어지더라도 완전히 서빙이 될 수 있게 하기 위함이다
- Replication Factor를 설정하면 리더를 가진다. 그 리더를 중심으로 쓰기 읽기가 가능 하다. 리더가 사라지면 다음 Broker가 받아서 리더가 된다.
Producer
- 메세지를 토픽으로 보내는 역할을 한다.
- Producer는 카프카 토픽으로 메시지를 게시를 하는 클라이언트이다.
- 메시지를 어떻게 어디에 넣을지 정해준다.
Consumer
- Topic에서 메세지를 가져와 소비하는 역할을 한다.
- Consumer를 생성할 때 그룹을 지정하지 않으면 개별의 Group이 생성이 된다.
- Consumer Group은 모든 파티션에서 데이터를 받을 수 있다.
- Consumer는 지정된 파티션으로부터 데이터를 받을 수 있다.
- Consumer는 메세지를 소비 할 때 리밸런싱을 하게 된다. 파티션 4가 남는 모습을 보이는데 Consumer4가 생성이 되면 리밸런싱 받아 파티션 4를 받게 된다.
Zookeeper
- Consumer와 통신, 메타데이터 정보 저장, 카프카 상태관리를 해주는 툴이라고 보면된다.
- 클러스터 관리 - 클러스터에 존재하는 브로커를 관리하고 모니터링
- Topic 관리 - 토픽 리스트를 관리
- 파티션 리더 관리 - Replication Factor 관리
- 브로커들 끼리 서로 발견 할 수 있도록 정보 전달
참고문헌
- 그림 및 내용 출처
Apache Kafka® Architecture: A Complete Guide
Apache Kafka is a distributed streaming platform with plenty to offer—from redundant storage of massive data volumes, to a message bus capable of throughput reaching millions of messages each second. This is your complete guide to Apache Kafka Architetur
www.instaclustr.com
Part 1: Apache Kafka for beginners - What is Apache Kafka? - CloudKarafka, Apache Kafka Message streaming as a Service
The first part of Apache Kafka for beginners explains what Kafka is - a publish-subscribe based durable messaging system exchanging data between processes, applications, and servers. The article provides a brief understanding of messaging and distributed l
www.cloudkarafka.com
IBM Automation Event-Driven Reference Architecture – Kafka Overview
In this article we are summarizing what Apache Kafka is and grouping some references, notes and tips we gathered working with Kafka while producing the different assets for this Event Driven Architecture references. This content does not replace the excell
ibm-cloud-architecture.github.io
-리밸런싱 관련 내용
Apache Kafka Rebalance Protocol, or the magic behind your streams applications
Since Apache Kafka 2.3.0, the internal Rebalance Protocol, which is especially used by Kafka Connect and consumers, has undergone several…
medium.com
-패스크캠퍼스
반응형'데이터 엔지니어링 > Kafka' 카테고리의 다른 글
[Kafka] KsqlDB 실습하기 - create Kstream, Ktable (0) 2022.07.31 [Kafka] ksqldb 실습환경 구축해보기 (0) 2022.07.31 [kafka] KsqlDB란? - Ksqldb 주요 개념(push, pull query)과 kafka에서 사용하는 Streaming Proces (0) 2022.07.31 [Kafka]kafka 필수 개념인 Topology와 Streaming processing 종류 알아보기- , Kpub/sub, Kstreams, KsqlDB의 차이점 (0) 2022.07.22 [Apache Kafka]Kafka가 만들어진 이유를 알아보자(개발 이유, 쓰는 이유 등) (0) 2022.07.11