Kafka 시작하기

log.yunsik·2022년 9월 6일
0

이벤트 스트리밍이란?

데이터베이스, 센서와 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형태로 캡쳐하는 것으로 실시간성 데이터를 처리하거나 수집하는 많은 곳에서 사용이 가능하다.

이벤트 스트림 특징

  • 이벤트들을 나중에 복구할 수 있도록 영구적으로 저장된다.
  • 실시간으로 조작, 처리, 반응한다.
  • 이벤트 스트림 뿐만 아니라 다르게 정의된 기술로도 라우팅이 가능하다.
  • 알맞은 정보를 알맞은 위치에 알맞은 시간에 데이터 흐름과 해석이 가능하다는 것을 보장한다.

Apache Kafka란?

주요 기능

  • 이벤트를 Publish하고 스트림의 이벤트들을 Subscribe한다. 여기에는 다른 시스템들에서 지속적으로 데이터를 내보내고 가져오는 것이 포함된다.
  • 스트림의 이벤트들을 원하는 시간동안 안정적이고 영구적으로 저장이 가능하다.
  • 스트림에서 현재 발생한 이벤트 또는 과거의 이벤트들을 처리할 수 있다.

특징

  • 모든 기능들은 탄력적,내결함성,고가용성,안전하게 제공된다.
  • 카프카는 bare-metal, vm, container, on-premises, cloud에 배포가 가능하다.
  • 다양한 벤더에서 제공하는 managed서비스를 이용하거나 self-manage서비스를 이용할 수 있다.

카프카 작동 방식

카프카는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템으로 다양한 환경에 배포가 가능하다.

서버 : 하나 이상의 서버 클러스터로 실행된다. 이 서버 중에는 브로커라고 하는 스토리지 계층을 형성한다. 카프카 커넥트를 실행해 이벤트 스트림으로부터 데이터를 지속적으로 가져오고 내보내고 관계형 데이터베이스 또는 기존 시스템과 통합한다. mission-critical한 사례를 구현할 수 있도록 카프카는 확장성이 뛰어나고 내결함성이 있다. 서버 중 하나에 장애가 발생하면 다른 서버가 작업을 인계받아 데이터 손실 없이 지속적으로 운영을 보장한다.

클라이언트 : 네트워크 문제나 시스템 오류가 발생한 경우에도 이벤트 스트림을 병렬, 대규모, 내결함성 방식으로 읽고 쓰고 처리하는 마이크로 서비스를 구축할 수 있다.


주요 개념

Event
무언가 일어난 일을 기록한 것으로 데이터를 읽거나 쓸 때 이벤트 형식으로 작업을 수행한다. 이벤트에는 "키","값","타임스템프" 및 선택적 메타데이터 헤더가 존재한다.
ex)

Event key: "Alice"
Event value: "Made a payment of $200 to Bob"
Event timestamp: "Jun. 25, 2020 at 2:06 p.m."

Producer
카프카에 이벤트를 쓰는 어플리케이션

Consumer
이벤트들을 구독하는 어플리케이션

카프카의 Consumer와 Producer는 분리되어 서로를 전혀 모른다. 그렇기 때문에 Producer는 Consumer를 전혀 신경쓸 필요가 없다. 이는 이벤트를 정확히 한번만 처리한는 등 카프카는 다양한 장점이 있다.

Topic
이벤트들은 토픽에 영구적으로 저장된다. 간단하게 말하면 토픽은 파일 시스템의 폴더와 유사하고 이벤트들은 폴더에 있는 파일들이다.

카프카의 토픽들은 언제나 multi-producer, multi-subscriber이다. 토픽은 0개 하나 그 이상 의 producer들이 쓸 수 있다. 여러 consumer가 소비할 수 있다. 이벤트들은 전통적인 메세징 시스템과는 다르게 이벤트를 소비해다 지워지지 않는다. 유저는 각 토픽별로 카프카가 이벤트를 얼마나 보존할지 정의해야 하고 보존 기간이 지난 오래된 이벤트들은 버린다. 카프카의 퍼포먼스는 데이터 사이즈와 일정하므로

Partition
토픽들은 나누어져 있다 이 뜻은 토픽은 여러 버킷들에 나누어져있다. 데이터의 분산 배치는 클라이언트 애플리케이션이 동시에 많은 브로커에서 데이터를 읽고 쓸 수 있도록 하기 때문에 확장성에 매우 중요하다. 새 이벤트가 토픽에 게시되면 토픽 파티션 중 하나에 추가된다. 동일한 파티션키가 있는 이벤트는 동일한 파티션에 기록되고 카프카는 지정된 주제 파티션의 모든 소비자가 항상 기록된 것과 정확히 동일한 순서로 해당 파티션의 이벤트를 읽도록 보장한다.

데이터 내결함성 및 고가용성을 만들기 위해 모든 주제를 지리적 지역이나 데이터 센터에서 걸쳐 복제할 수 있으므로 문제가 발생할 경우에 대비하여 데이터 복사본이 있는 여러 브로커가 있다. 브로커에 대한 유지 관리를 수행한다. 일반적으로 레플리케이션이 3개이다 항상 너의 데이터가 세곳에 복사된다. 이 복제본은

0개의 댓글