일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- AWS
- daspecialty
- twosum
- 파이썬
- programmers
- ELK
- 프로그래머스
- dump
- RecommendationSystem
- 알고리즘
- Algorithm
- CentOS
- dfs
- python
- 스파크
- 리트코드
- 해시
- solution
- elasticsearch
- 장고
- Spark
- 키바나
- Django
- leetcode
- 깊이우선탐색
- 엘라스틱서치
- Easy
- Optimization
- Medium
- kibana
- Today
- Total
Archive
Kafka 특징 개요 본문
TOC
-
What is Kafka
-
Kafka의 특징
What is Kafka
여러대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템.
링크드인에서 만든 대량의 데이터를 높은 처리량과 실시간으로 취급하기 위한 프레임워크
-
확장성 : 여러 서버로 쉽게 Scale out 할 수 있음 -> 데이터 양에 따른 손쉬운 처리
-
Broker를 여러대 구성할 수 있고, Broker수를 증가시킴으로서 Kafka Cluster 전체의 처리량을 증가시킬 수 있다.
-
-
영속성 : 파일 기반으로 수신한 데이터를 디스크에 저장 -> 필요할 때 읽을 수 있음
-
디스크의 용량에 따라 기간/크기를 기준으로 저장 및 제거 가능
-
-
유연성 : 연결 할 수 있는 프레임워크들이 많음
-
Producer/Consumer 구현을 위한 API가 제공되어 이를 구현한 OSS가 다수 존재
-
-
신뢰성 : 메시지 전달 보증을 통해 데이터 분실의 위험을 막음
-
Ack와 Offset Commit 방식으로 메시지가 제대로 송수신되었음을 확인, 실패 시 재시도를 허용.
-
Kafka의 특징
-
각 구성요소와 특징에 대해 자세하게 짚고넘어가는 글을 작성할 예정이니 가볍게 적어보겠다.
1. Pub / Sub 메시징 모델
-
일반적으로 메시징 모델은 Producer, Broker, Consumer로 구성되어있다.
-
Producer (Writer) : 메시지 생산자
-
Broker (Server) : 메시지 수집/전달
-
Consumer (Reader) : 메시지 소비자
-
-
Producer는 메시지를 Consumer에게 메시지를 직접 전달하는 것이 아니라 Broker를 통해 전달.
-
Broker 내의 Topic에 메시지를 등록(Publish) 하는 형태로 이루어진다.
-
-
Consumer는 여러개 존재하는 Topic중 하나를 선택하여 메세지를 받는다.
-
같은 토픽을 구독(Subscribe)하면 같은 메시지를, 다른 토픽을 구독하면 다른메시지를 받는다.
-
-
Consumer Group을 두어 여러 Consumer가 한 개의 Topic에 대해 분산처리할 수 있다.
-
즉 메시지 전달과정은 각각이 독립적으로 이루어지며, 따라서 Producer, Broker, Consumer 각각 본인들 역할에만 충실하면 메시지전달이 이루어지므로 매우 효율적이고 안정적으로 데이터 처리를 할 수 있다.
-
그림상 화살표는 일방향이지만 Producer -> Broker (Push), Consumer -> Broker (Pull) 이루어져 있다.
-
Broker가 Consumer의 상태를 체크할 필요가 없고, Consumer 주체적으로 데이터 수신, 진행 을 관리하게 됨
-
2. 디스크기반
-
디스크에 데이터를 저장하므로서 영속성을 보장한다.
3. Connect API
-
Broker와 Consumer, Producer 사이의 Connect API를 통해 다른 프레임워크들을 쉽게 Producer, Consumer로서 연결시킬 수 있다.
4. 전달보증
-
세가지 수준의 전달보증을 제공한다
-
At Most Once
-
1회 전달 시도해본다. 메시지는 중복되지 않으나 상실될 수도 있다 ( 재전송 X,)
-
-
At Least Once
-
적어도 1회는 전달한다. 메시지가 중복될 가능성은 있지만 상실되지는 않는다
-
-
Exactly Once
-
1회만 전달한다. 중복되거나 상실되지도 않고 확실하게 메세지가 도달한다
-
Producer - Broker, Broker - Consumer 사이 모두에서 보증이 되어야함.
-
Producer - Broker : 시퀀스 번호를 관리하여 중복되는 실행을 제거하므로서 보증
-
Broker - Consumer : 트랜젝션 중단시 중단하기 까지의 처리를 제거하므로서 보증
-
-
Broker 뿐만 아니라 Producer 시스템, Consumer시스템 모두 상태관리가 필요함.
-
따라서 Kafka 단독으로는 실현하기 힘드나, Kafka는 이미 해당 기능이 있으므로 Producer 시스템, Consumer시스템에서의 필요 조건이 만족하면 전달 보증.
-
-
-
-
주로 Exactly Once를 목적으로 하나 초기에는 처리량을 위해 At Least Once 수준으로 전송했다.
-
작성기준 현 버전인 2.6.0에서는 exactly once 실패시의 에러 핸들링을 하는 기능까지 추가되었다.
'------- DE ------- > Kafka' 카테고리의 다른 글
Kafka 구성 및 Send/Receive (0) | 2020.09.15 |
---|