Kafka Streams이란?
카프카 스트림즈는 카프카에서 공식적으로 제공하는 자바 라이브러리이다.
- 토픽에 있는 데이터를 낮은 지연과 함께 빠른속도를 데이터를 처리할 수 있다.
- 라이브러리로 제공 되기 때문에 JVM 기반 언어를 선택하여 사용하면 된다.
장점
- 카프카와 완벽하게 호환된다.(외부 오픈소스 툴보다 카프카와 완벽하게 호환된다.)
- 유실아나 중복 처리 되지 않고 딱 한번 처리 된다.
- 안전하게 데이터를 처리할 수 있다.
- 스케줄 도구가 필요없다.
- 스트림즈 DSL과 프로세서 API를 제공한다.
- 스트림즈 DSL - 이벤트 기반 데이터 처리시 필요한 다양한 기능 map, join, window와 같은 기능 제공
- 대부분의 기능들은 스트림즈 DSL에 다 있지만 없으면 프로세서 API를 사용한다.
- key - value 저장소로도 사용할 수 있다.
- 자체적으로 로컬 상태 저장소를 사용한다.
- 비상태 기반 처리(들어오는 즉시 바로 처리) -> 유실이나 중복이 발생할 염려가 적다
- 상태 기반 처리를 직접 구현하려면 어렵다. 하지만 스트림즈는 로컬에서 rocksdb를 사용하여 상태 기반 처리를 도와준다.
다음과 같이 기존의 producer, consumer 구조에서
Streams를 사용하면 다음과 같은 구조로 만들 수 있다.
이러한 카프카 스트림즈 어플리케이션을 하나, 두개부터 처리하는 데이터가 많아질수록 어플리케이션의 개수를 늘려 스케일 아웃을 하면 된다.
Confluent에서는 Flink, Storm보다 간결하고 Consumer보다 성능이 좋다고 주장한다.
참고
맨밑에그림은직접그리신건가요?