2018 년 4 월 9 일 업데이트 : 현재 Kafka 용 이벤트 스트리밍 데이터베이스 인 ksqlDB 를 사용 하여 Kafka에서 데이터를 처리 할 수도 있습니다 . ksqlDB는 Kafka의 Streams API를 기반으로 구축되었으며 "스트림"및 "테이블"에 대한 최고 수준의 지원도 제공됩니다.
소비자 API와 Streams API의 차이점은 무엇입니까?
Kafka의 Streams 라이브러리 ( https://kafka.apache.org/documentation/streams/ )는 Kafka 생산자 및 소비자 클라이언트 위에 구축됩니다. Kafka Streams는 일반 클라이언트보다 훨씬 더 강력하고 표현력이 뛰어납니다.
일반 소비자보다 Kafka Streams를 사용하여 실제 애플리케이션을 작성하는 것이 훨씬 간단하고 빠릅니다.
다음은 Kafka Streams API의 몇 가지 기능이며, 대부분은 소비자 클라이언트에서 지원하지 않습니다 (기본적으로 Kafka Streams를 다시 구현하여 누락 된 기능을 직접 구현해야 함).
- Kafka 트랜잭션을 통해 정확히 한 번 처리 의미를 지원합니다 ( EOS가 의미하는 것 ).
- 스트리밍 조인 , 집계 및 창을 포함한 내결함성 상태 저장 (물론 상태 비 저장) 처리를 지원 합니다 . 즉, 애플리케이션의 처리 상태를 즉시 관리 할 수 있습니다.
- 이벤트 시간 처리 는 물론 처리 시간 및 수집 시간을 기반으로 한 처리를 지원합니다 . 또한 비 순차 데이터를 원활하게 처리 합니다 .
- 스트림 처리와 데이터베이스가 만나는 스트림과 테이블 모두에 대한 최고 수준의 지원을 제공 합니다. 실제로 대부분의 스트림 처리 애플리케이션에는 각각의 사용 사례를 구현하기 위해 스트림과 테이블이 모두 필요하므로 스트림 처리 기술에 두 가지 추상화 (예 : 테이블에 대한 지원 없음) 중 하나가없는 경우 문제가 발생하거나이 기능을 직접 구현해야합니다. (좋은 결과 내길 바랄 게...)
- 대화 형 쿼리 ( '쿼리 가능 상태'라고도 함)를 지원 하여 다른 애플리케이션 및 서비스에 최신 처리 결과를 노출합니다.
- 더 표현이다와 그 선박 (1) 함수형 프로그래밍 스타일의 DSL 과 같은 작업으로
map
, filter
, reduce
뿐만 아니라 (2) 필수 스타일 프로세서 API 예 : 복합 이벤트 처리 (CEP)을 수행하기위한, (3) 당신도 결합 할 수 있습니다 DSL 및 프로세서 API.
- 단위 및 통합 테스트를위한 자체 테스트 키트 가 있습니다.
Kafka Streams API에 대한 더 자세하지만 여전히 높은 수준의 소개는 http://docs.confluent.io/current/streams/introduction.html 을 참조 하십시오. 또한 하위 수준 Kafka 소비자와의 차이점을 이해하는 데 도움이됩니다. 고객.
Kafka Streams 외에도 이벤트 스트리밍 데이터베이스 ksqlDB 를 사용하여 Kafka에서 데이터를 처리 할 수 있습니다. ksqlDB는 Kafka Streams 위에 구축됩니다. 기본적으로 Kafka Streams와 동일한 기능을 지원하지만 Java 또는 Scala 대신 스트리밍 SQL을 작성합니다. 프로그래밍 방식으로 CLI 또는 REST API를 통해 ksqlDB와 상호 작용할 수 있습니다. REST를 사용하지 않으려는 경우를 대비하여 네이티브 Java 클라이언트도 있습니다.
그렇다면 Kafka에서 메시지를 소비하거나 생성하기 때문에 Kafka Streams API는 어떻게 다릅니 까?
예, Kafka Streams API는 데이터를 읽고 Kafka에 데이터를 쓸 수 있습니다. Kafka 트랜잭션을 지원하므로 하나 이상의 주제에서 하나 이상의 메시지를 읽고 필요에 따라 처리 상태를 선택적으로 업데이트 한 다음 하나 이상의 출력 메시지를 하나 이상의 주제에 모두 하나로 작성할 수 있습니다. 원자 작동.
소비자 API를 사용하여 자체 소비자 애플리케이션을 작성하고 필요에 따라 처리하거나 소비자 애플리케이션에서 Spark로 보낼 수있는 이유는 무엇입니까?
예, 직접 소비자 애플리케이션을 작성할 수 있습니다. 앞서 언급했듯이 Kafka Streams API는 Kafka 소비자 클라이언트 (및 생산자 클라이언트 포함) 자체를 사용하지만 Streams API가 제공하는 모든 고유 기능을 수동으로 구현해야합니다. . "무료"로받을 수있는 모든 것은 위의 목록을 참조하십시오. 따라서 사용자가 더 강력한 Kafka Streams 라이브러리보다 일반 소비자 클라이언트를 선택하는 것은 드문 상황입니다.