Kafka Streams DSL 에는 레코드의 흐름을 추상화한 개념들이 3가지 존재한다.

Kstream
데이터 조회 시 토픽에 존재하는 모든 레코드가 출력됨. 컨슈머로 토픽을 구독하여 데이터를 컨슈밍하는 것과 같은 효과.

KTable
메시지 키를 기준으로 묶어서 사용하므로, unique 키값을 기준으로 가장 최신 레코드를 사용.
따라서 데이터 조회 시 메시지 키 기준으로 가장 최신에 추가된 레코드의 데이터가 출력됨.

1개의 파티션은 1개의 태스크에 할당되어 사용됨.

GlobalKTable
메시지 키를 기준으로 묶어서 사용된다는 점은 KTable 과 동일하지만, GlobalKTable 로 선언된 토픽은 모든 파티션 데이터가 각각의 태스크에 할당되어 사용됨.

Table Join

KStream - GlobalKTable 조인 가능
(repartitioning 불필요)

KTable => GlobalKTable 로 선언하여 사용 시 Kstream 과 조인하여 사용 가능

단, 토픽 사이즈가 클 경우에는 repartitioning 을 통해 KTable 을 사용하는 것이 나을 수 있음.

0개의 댓글