개요

Kafka Stream Intro 영상 을 보고 개략적인 내용을 정리해둔다.

한줄요약

기존 kafka의 장점은 분산시스템의 메세지처리의 복잡한 문제를 해결해주는 것이었다. stream api는 분산된 계산(computation)에 있어 우리의 어플리케이션 내에 존재하여 scale out에 도움을 준다.

What is s Streams?

  • stream을 연속적인 실시간 레코드의 flow라고 생각해보자.
    • 우리는 명시적으로 새 레코드를 요청할 필요 없이 그냥 계속 받는거다.
  • 레코드는 key-value 페어이다.

What is the kafka streams API?

  • kafka stream api는 데이터를 transform하고 enrich한다.
    • 레코드별 stream 처리를 milliseconds latency로 지원
    • stateless 프로세싱, stateful 프로세싱, windowing 연산을 지원
  • 표준 자바 어플리케이션 코드를 작성하고 실시간으로 마이크로서비스를 처리할 수 있음
    • 분리된 프로세싱 클러스터가 필요하지 않음 (그냥 기존 어플리케이션 jar파일에 일부로 포함되는것만으로 가능함)
    • mac, linux, windows 모두 개발이 가능
    • elastic, highly scalable, fault-tolerant
    • 클라우드화 하기 좋음(k8s와 합쳐지면 wonderful)
    • 클러스터가 크건 작건 잘 동작함
    • kafka security와 통합되어 있음
    • 0.11.0부터 exactly-one semantics를 지원함
  • kafka stream은 apache kafka 프로젝트의 일부임

Using the kafka streams API

  • 카프카 스트림 API를 java or scala 어플리케이션 안에서 호출가능함
    • kafka streams api는 카프카 클러스터랑 통신함
    • 어플리케이션 kafka brokers 위에서 실행되지 않음