반응형
카프카 스트림즈란?
- 카프카 스트림즈는 토픽에 적재된 데이터를 상태기반 또는 비상태기반으로 실시간 변환하여 다른 토픽에 적재하는 자바 라이브러리다.
- 스트림즈는 카프카에서 공식적으로 지원하는 라이브러리다.
- 자바 기반 스트림즈 애플리케이션은 카프카 클러스터와 완벽하게 호환되면서 스트림 처리에 필요한 편리한 기능들(신규 토픽 생성, 상태 저장, 데이터 조인 등)을 제공한다.
비상태 기반 처리
- 필터링이나 데이터를 변환하는 처리다.
- 데이터가 들어오는 즉시 처리하고 바로 프로듀스한다. 따라서 유실이나 중복이 발생할 염려가 적고 개발이 쉽다.
상태 기반 처리
- 상태 기반 처리는 직접 구현이 너무 어렵다.
- 윈도우, 조인, 취합과 같은 처리는 이전 받았던 데이터를 프로세스가 메모리에 저장하고 있으면서 다음 데이터를 참조해 처리해야하기 때문이다.
- 이런 상태기반 분산 프로세스는 매우 난이도가 있는 작업이다.
- 이런 어려움을 극복하게 도와주는 것이 스트림즈다.
카프카 스트림즈 장점
- 데이터 유실과 중복처리 되지 않고 딱 1번만 처리 되는 것을 보장한다.
- 스케줄링 도구가 필요 없다.
- 스트림즈 DSL과 프로세서 API를 제공해 스트림을 처리한다.
- 스트림즈 DSL이 제공하는 이벤트 기반 메서드를 사용하면 쉽게 구현할 수 있다.
- 로컬 상태 저장소를 사용한다.
- 앞에서 상태 기반 처리를 스트림즈가 도와준다고 했다.
- 로컬에 rocksdb를 사용해 상태를 저장하고 이 상태에 대한 변환 정보는 카프카의 변경 로그 토픽에 저장한다.
- 그래서 스트림즈를 사용하면 프로세스에 장애가 발생하더라도 그 상태가 모두 안전하게 저장되기 때문에 자연스럽게 장애가 복구될 수 있다.
참고자료
아파치 카프카 애플리케이션 프로그래밍 with 자바
https://www.youtube.com/watch?v=vKxhPUUEDmM&t=20s
반응형
댓글