• Embedded Kafka Cluster

    EmbeddedKafkaCluster KafkaStreams의 소스 코드를 보면 Integration Test 작성을 위해서 EmbeddedKafkaCluster를 많이 사용하는것을 볼 수 있다. EmbeddedKafkaCluster를 사용하면 마치 로컬에서 Kafka Broker를 실행시키는 것과 같은 효과를 얻을 수 있다. public class StreamIntegrationTest { private static final int NUM_BROKERS = 1; @ClassRule public static final EmbeddedKafkaCluster CLUSTER = new EmbeddedKafkaCluster(NUM_BROKERS); @Before public...


  • Monitoring Consumer LAG - Burrow

    Burrow Burrow - Kafka Consumer Lag Checking Burrow는 카프카의 모니터링 툴로 Consumer의 LAG을 모니터링할 때 주로 사용된다. 모든 Consumer의 커밋 오프셋을 모니터링한다. 또한 필요할 때 Consumer의 상태를 계산한다. HTTP 엔드포인트를 통해 상태를 요청할 수 있으며, 다른 카프카 클러스터의 정보를 제공받을 수 있다. 이메일이나 HTTP 호출을 통해 다른 서비스로 상태를 보낼...


  • Stream DSL

    Streams DSL 이 글은 Streams DSL를 번역한 글이다. 잘못된 번역이 있을 수 있으며 생략된 부분이 있기 때문에 더 자세한 내용은 원글을 참고하길 바란다. Kafka Stream DSL (Domain Specific Language)는 Stream Processor API를 사용해서 구현되어 있다. 초보자들은 DSL를 사용하는게 좋다. 대부분의 데이터 처리 작업은 DSL를 사용해서 단 몇 줄로 처리할 수...


  • KTable, Global KTable

    KStream, KTable, GlobalKTable KStream Note 오직 Kafka Streams DSL만이 KStream 개념이 가지고 있다. KStream은 레코드 스트림의 추상화이다. 레코드 스트림안에 있는 모든 레코드들은 INSERT로 해석된다. KStream에서는 레코드를 추가하는 것만 가능하다. 삭제나 업데이트 개념이 없다. 레코드의 키가 같다 하더라도 같은 키를 가진 기존행을 대체할 수는 없다. 예를 들어 다음 두 개의 데이터...


  • Kafka Stream - Time

    Time Time 스트림 프로세싱에서 시간은 중요한 개념이다. 그리고 시간을 어떻게 모델링하고 통합하는지도 중요하다. 예를 들어 Windowing과 같은 연산은 시간 경계를 기반으로해서 정의된다. 카프카 스트림은 다음과 같은 시간 개념을 지원한다. Event-time : 이벤트 또는 레코드가 발생한 시점. Event-time semantics를 위해서는 레코드를 생성할 때 레코드에 타임스탬프를 포함해야 한다. 즉 Event-time은 레코드가 생성되는...