topic node kafka create apache-kafka kafka-consumer-api apache-kafka-streams

apache kafka - node - Kafka: API de consumidor vs API de Streams



kafka node js (1)

Actualización 09 de abril de 2018 : hoy en día también puede usar KSQL , el motor de transmisión de SQL para Kafka, para procesar sus datos en Kafka. KSQL está construido sobre la API Streams de Kafka, y también viene con soporte de primera clase para "streams" y "tablas". Piense en ello como el hermano SQL de Kafka Streams donde no tiene que escribir ningún código de programación en Java o Scala.

¿Cuál es la diferencia entre Consumer API y Streams API?

La API Streams de Kafka ( https://kafka.apache.org/documentation/streams/ ) está construida sobre los clientes productores y consumidores de Kafka. Es significativamente más potente y también más expresivo que el cliente consumidor de Kafka. Estas son algunas de las características de la API de Kafka Streams:

  • admite semántica de procesamiento exactamente una vez (Kafka versiones 0.11+)
  • admite procesamiento con estado tolerante a fallas, incluidas las joins transmisión, aggregations y windowing
  • admite el procesamiento en tiempo de eventos, así como el procesamiento basado en el tiempo de procesamiento y el tiempo de ingestión
  • tiene soporte de primera clase para secuencias y tablas , que es donde el procesamiento de secuencias se encuentra con las bases de datos; en la práctica, la mayoría de las aplicaciones de procesamiento de flujo necesitan tanto flujos Y tablas para implementar sus respectivos casos de uso, por lo que si una tecnología de procesamiento de flujo carece de cualquiera de las dos abstracciones (por ejemplo, no hay soporte para tablas), usted está atascado o debe implementar manualmente esta funcionalidad usted mismo (buena suerte con eso...)
  • admite consultas interactivas para exponer los últimos resultados de procesamiento a otras aplicaciones y servicios)
  • más expresivo: se entrega con (1) un estilo de programación funcional DSL con operaciones como map , filter , reduce y (2) un imperativo API de procesador de estilo para, por ejemplo, realizar un procesamiento de eventos complejos (CEP), y (3) puede incluso combina el DSL y la API del procesador.

Consulte http://docs.confluent.io/current/streams/introduction.html para obtener una introducción más detallada pero aún de alto nivel a la API de Kafka Streams, que también debería ayudarlo a comprender las diferencias para el consumidor de Kafka de nivel inferior. cliente. También hay un tutorial basado en Docker para la API de Kafka Streams , sobre el que escribí en un blog a principios de esta semana.

Entonces, ¿cómo es la API de Kafka Streams diferente ya que esto también consume o produce mensajes a Kafka?

Sí, la API de Kafka Streams puede leer datos y escribir datos en Kafka.

y ¿por qué es necesario ya que podemos escribir nuestra propia aplicación para el consumidor usando la API del consumidor y procesarla según sea necesario o enviarla a Spark desde la aplicación para el consumidor?

Sí, podría escribir su propia aplicación para el consumidor, como mencioné, la API de Kafka Streams utiliza el cliente del consumidor Kafka (más el cliente productor), pero tendría que implementar manualmente todas las características únicas que proporciona la API de Streams. . Vea la lista de arriba para todo lo que obtiene "gratis". Por lo tanto, es una circunstancia bastante rara que un usuario elija el cliente consumidor de bajo nivel en lugar de la API más poderosa de Kafka Streams.

Recientemente comencé a aprender Kafka y termino con estas preguntas.

  1. ¿Cuál es la diferencia entre Consumer y Stream? Para mí, si alguna herramienta / aplicación consume mensajes de Kafka es un consumidor en el mundo de Kafka.

  2. ¿Cómo es diferente Stream ya que esto también consume o produce mensajes a Kafka? y ¿por qué es necesario ya que podemos escribir nuestra propia aplicación para el consumidor usando la API del consumidor y procesarla según sea necesario o enviarla a Spark desde la aplicación para el consumidor?

Hice Google sobre esto, pero no obtuve buenas respuestas para esto. Lo siento si esta pregunta es demasiado trivial.