일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- EC2
- Network
- Kafka
- helm
- kubeadm
- MAC address
- java
- CVAT
- aws s3
- PostgreSQL
- JavaScript
- docker
- Operating System
- Spring
- AWS
- jvm
- Packet
- grafana
- CSV
- log
- airflow
- Trino
- Vision
- OS
- kubernetes
- Python
- kubectl
- tcp
- zookeeper
- ip
- Today
- Total
JUST WRITE
Kafka Architecture 본문
Kafka는 아래와 같은 구성 요소를 가진다.
- Records
- Topics
- Consumers
- Producers
- Brokers
- Logs
- Partitions
- Clusters
Kafka가 어떻게 동작하는지와 구성요소들이 어떤 역할을 하는지 대략적으로 정리해보려 한다.
Topics, Producers, Consumers
Kafka의 주요한 역할은 Data를 받아서 전달하는 역할이다.
그 역할을 Topics, Producers, Consumers에서 한다.
- Producer -> publish 하는 Topic에 Data를 전달
- Topic -> Log라는 구조로 디스크에 Data를 저장
- Consumer -> Topic에 쌓인 Data를 읽어서 처리
Topic Partition, Consumer Group
Topic에 저장되는 Log는 Partition과 Segment에 나눠서 저장된다.
분산되어 Data가 저장되기 때문에 Write, Read 역시 빠르게 처리될 수 있다.
분산된 Data를 한번에 처리하려면 다수의 Consumer가 필요하며 Kafka에서는 Group을 형성할 수 있다.
Consumer Group을 형성하면 Topic에 대해서 동시에 처리할 수 있다.
다른 Consumer Group과는 같은 Topic 처리에 대해서 offset을 통해 구분할 수 있다.
Kafka Cluster
Kafka는 failover를 위해 replication을 둔다.
Broker라는 Kafka Server를 여러 개를 설치하여 하나의 Cluster로 구성한다.
Data가 저장되는 Topic의 Partition을 각 Broker에 복제한다.
Broker에 장애가 생겨도 replication이 있는 Broker에서 처리하면 된다.
Zookeeper
Kafka는 Cluster로 구성된 여러 개의 Broker를 관리하기 위해 Zookeeper를 이용한다.
Kafka에서 Zookeeper의 역할은 아래와 같다.
- Broker와 Topic Partition의 Leader를 선출
- Broker의 Metadata를 저장/관리
- Kafka 설정을 관리
하지만 Kafka에서는 관리 포인트를 줄이기 위해 Zookeeper를 제외하려 한다.
대신 Kafka 내부적으로 관리하는 Kafka Raft(KRaft)를 도입하려 한다.
'MLOps > Kafka' 카테고리의 다른 글
Kafka Broker Log 관리 (0) | 2023.01.10 |
---|---|
Ansible를 통한 Kafka 설치 (0) | 2022.12.18 |
AWS EC2 Kafka 설치 (0) | 2022.11.13 |
Kafka Topic (0) | 2022.10.03 |
What is kafka (0) | 2022.08.09 |