일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kubectl
- Network
- kubernetes
- CVAT
- ip
- PostgreSQL
- AWS
- Packet
- Kafka
- MAC address
- kubeadm
- log
- Operating System
- Spring
- aws s3
- airflow
- java
- Python
- tcp
- JavaScript
- docker
- jvm
- zookeeper
- Trino
- OS
- EC2
- Vision
- helm
- CSV
- grafana
- Today
- Total
JUST WRITE
What is kafka 본문
What is Kafka?
Kafka는 publish-subscribe messaging queue, messaging system이다.
Real-time streaming data architecture에 주로 사용된다.
Kafka는 안정적이고 좋은 performance로 Spotify, Uber, Netflix 등 다양한 회사에서 사용되고 있다.
Kafka는 분산 streaming 플랫폼으로 Fault tolerant, 장애에 대응할 수 있는 storage이기도 하다.
Kafka 특징
so fast
Kafka는 빠른 Data 이동을 위해 OS Kernel에 의존한다.
Zero-copy를 통해 속도를 개선한다.
Immutable commit log를 Disk에 순차적으로 저장한다.
이로 인해 Random disk Access와 slow disk seeking을 안하게 한다.
sharding을 통해 수평적 확장을 제공해 큰 Data Load가 가능하다.
streaming architecture
Kafka는 자주 real-time streaming system에 사용된다.
Kafka streaming과 같은 Kafka ecosystem은 실시간 분석할 능력을 갖추고 있다.
Storm, Flink, Spark Streaming과 같은 빠른 처리가 필요한 시스템과 연계가 가능하다.
Decoupling Data Streams
Kafka는 middle layer로 실시간 Data pipline내 system간 의존성을 제거 한다.
System이 복잡해지면서 Data가 발생하고 처리하는 Server가 다양하고 많아졌다.
다양해진 Server간 통신 protocol를 맞추는 것에 큰 노력이 필요해졌다.
Kafka는 Server사이에 존재하여 Data를 전달하는 protocol를 단순하게 만들어줬다.
Scalable message storage
Kafka는 들어오는 message를 commit log로 저장하며 replication을 만들어 관리할 수 있다.
Partition과 Consumer를 적절하게 세팅하여 들어오는 message를 병렬로 처리할 수 있다.
Kafka는 Cluster로 구성할 수 있으며, replication을 두어 장애에 대응할 수 있다.
Polyglot
Kafka는 middle layer로 다양한 System과의 연계가 필요하다.
그러다 보니 C#, Java, C, Python, Go 등 그 외에 다양한 language를 지원한다.
Kafka ecosystem은 REST Proxy도 제공한다.
Schema Registry를 통해 Avro Schema도 지원한다.
Kafka 사용
- 실시간 Streaming Data Pipline 구성
- 실시간 Data 분석, transform, aggregate
- Server간 Data 복제, 정합성(sync)
- log aggregation, messaging, click-stream tracking
[주요 용어]
zero-copy
파일 전송 시 Kernel에서 Application으로 Context switch되지 않고 바로 전송 할 수 있도록 하는 방식
Context Switching과 복사본 갯수가 줄어 CPU 자원 낭비를 줄어들게 한다.
polygot
여러 언어에 능통한 자라는 뜻으로, IT에서는 여러 Programing Language로 작성가능 한 경우
[참고사이트]
'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 |
Kafka Architecture (0) | 2022.08.14 |