티스토리 뷰

Event Streaming 이란?

  • 이벤트 소스로부터 이벤트 스트리밍의 형태로 실시간으로 데이터를 캡처하고, 이벤트 스트리밍을 나중에 사용할 수 있도록 영구적으로 저장한다.
  • 이벤트 스트리밍을 처리하고 필요한 목적지로 라우팅한다.
  • 이벤트 스트리밍은 옳은 정보가 적시에 옳바른 곳에 있도록 연속적 흐름과 데이터 해석을 보장한다.

 

Kafka는 Event Streaming 플래폼이다

  • kafka는 이벤트 스트리밍을 Publish(wirte) 하고 Subscribe(Read)해서, 시스템들로부터 데이터를 계속적으로 가져오거나 내보낸다
  • kafka는 이벤트 스트리밍을 내구성있게 보관한다
  • kafka는 이벤트 스트리밍을 처리한다

 

Kafka는 어떻게 작동할까?

kafka는 TCP로 소통하는 client 와 server로 구성된 분산 시스템이다.

server - kafka는 한대 이상의 서버로 클러스터를 구성해 돌아감
- storage 레이어에서 몇개의 서버는 Broker가 됨
- 다른 몇개의 서버는 kafka connect 를 가동하고 rdb등과 연동되어 계속적으로 데이터를 가져오거나 내보냄
- 어떤 서버가 실패하면, 다른 서버가 대신 일을 처리해서 데이터 손실을 방지함
client - 이벤트 스트리밍을 병렬로 읽고, 쓰고, 처리하는 (내구성 good) 애플리케이션이나 마이크로 서비스를 만들수 있음
- 프로그래밍 언어, 라이브러리 등 지원

 

 

Concept and Terminology

event 이벤트 형식의 기록 또는 메세지
- key,value, timestamp, (선택적으로) metdata header 를 가지고 있음
producer kafka에 event를 publish(write)하는 client application
consumer kafka로부터 event를 subscribe(read, process) 것
topic - event가 정렬되어 저장된 곳 (파일시스템의 디렉토리와 비슷)
- topic는 0, 1, many 의 producer나 consumer를 가질 수 있음
- topic는 읽어진다고 삭제되지 않음 (커스텀으로 얼마나 오래 보관할지 설정)
- 모든 topic은 복제된다 그래서 여러 broker에 복사본이 저장된다
ex ) production setting에서 replicationf factor가 3이라면  3개의 복사본이 생긴다 (partition level 에서 수행)
partition - topic이 여러개의 "bucket" 으로써 각 브로커들에 분산되어 있음
- 새로운 event가 어떤 topic에 publish 되면, 그 topic의 partition 에 추가됨
- 동일한 event key 를 가진 event는 동일한 partition에 기록됨 
- consumer는 기록된 순서와 동일하게 partition 의 이벤트를 읽을 수 있게됨

 

 

Kafka API

Admin API topic, broker를 포함해 kafka object를 관리할 수 있음
Producer API 한 개 이상의 topic으로 이벤트 스트림을 publish 할 수 있음
Consumer API 한 개 이상의 topic을 읽을 수 있고, consumer에게 생성된 이벤트 스트림을 처리할 수 있음
Kafka Streams API 스트리밍 처리 어플리케이션을 만들기 위해, 스트리밍을 처리할 수 있는 고레벨의 함수를 제공함
ex) aggregation, join, windowing, 이벤트 시간 기반 처리 등
Kafka Connect API 외부 시스템 이벤트 스트림을 내보내거나 가져와서 consume 또는 produce하는 reusable 데이터 connector를 빌드하고 실행시킨다 -> kafka와 외부 시스템 통합될 수 있게

 

 

AWS MSK

- Managed Streaming for Apache Kafka

- aws 가 kafka cluster랑 zookeeper 관리해줌 (zookeeper를 따로 운영하지 않아도 됨)

- cloudwatch로 모니터링 제공

- KMS로 인증서 발급가능

- 여러 AZ로 복제 가능

 

 

AWS Kinesis

- kafk 같은 data streaming 플랫폼인데 인프라를 aws 에서 관리해주고 여러가지 aws 리소스를 활요할 수 있음

 

 

 

Reference:

https://kafka.apache.org/intro

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

'Data Engineering' 카테고리의 다른 글

[Flink] Kafka connector  (0) 2022.09.18
[Flink] 플링크의 스냅샷 생성  (0) 2022.09.18
[zookeeper] 쥬키퍼 overview (공식문서 정리)  (0) 2022.09.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함