Kafka Streams

방진혁·2022년 4월 25일
1
post-thumbnail

Kafka Streams이란?

카프카 스트림즈는 카프카에서 공식적으로 제공하는 자바 라이브러리이다.

  • 토픽에 있는 데이터를 낮은 지연과 함께 빠른속도를 데이터를 처리할 수 있다.
  • 라이브러리로 제공 되기 때문에 JVM 기반 언어를 선택하여 사용하면 된다.

장점

  • 카프카와 완벽하게 호환된다.(외부 오픈소스 툴보다 카프카와 완벽하게 호환된다.)
  • 유실아나 중복 처리 되지 않고 딱 한번 처리 된다.
  • 안전하게 데이터를 처리할 수 있다.
  • 스케줄 도구가 필요없다.
  • 스트림즈 DSL과 프로세서 API를 제공한다.
    • 스트림즈 DSL - 이벤트 기반 데이터 처리시 필요한 다양한 기능 map, join, window와 같은 기능 제공
    • 대부분의 기능들은 스트림즈 DSL에 다 있지만 없으면 프로세서 API를 사용한다.
  • key - value 저장소로도 사용할 수 있다.
  • 자체적으로 로컬 상태 저장소를 사용한다.
    • 비상태 기반 처리(들어오는 즉시 바로 처리) -> 유실이나 중복이 발생할 염려가 적다
    • 상태 기반 처리를 직접 구현하려면 어렵다. 하지만 스트림즈는 로컬에서 rocksdb를 사용하여 상태 기반 처리를 도와준다.

다음과 같이 기존의 producer, consumer 구조에서

Streams를 사용하면 다음과 같은 구조로 만들 수 있다.

이러한 카프카 스트림즈 어플리케이션을 하나, 두개부터 처리하는 데이터가 많아질수록 어플리케이션의 개수를 늘려 스케일 아웃을 하면 된다.

Confluent에서는 Flink, Storm보다 간결하고 Consumer보다 성능이 좋다고 주장한다.

참고

profile
꾸준히 성장하고픈 개발자입니다.

1개의 댓글

comment-user-thumbnail
2022년 9월 8일

맨밑에그림은직접그리신건가요?

답글 달기