Kafka Streams

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

Kafka Streams이란?

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

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

장점

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

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

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

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

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

참고

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

1개의 댓글

comment-user-thumbnail
2022년 9월 8일

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

답글 달기