-
[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 관리
- 브로커들 끼리 서로 발견 할 수 있도록 정보 전달
참고문헌
- 그림 및 내용 출처
-리밸런싱 관련 내용
-패스크캠퍼스
반응형'데이터 엔지니어링 > 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