Lanzado Apache Kafka 3.0.0

El equipo de la Fundación Apache ha anunciado el lanzamiento de Apache Kafka 3.0 en nombre de la comunidad de Apache Kafka. Apache Kafka 3.0 es una versión importante en más de un sentido.

Apache Kafka 3.0 presenta una variedad de características nuevas, cambios de API importantes y mejoras en KRaft, el mecanismo de consenso integrado de Apache Kafka que reemplazará a Apache ZooKeeper.

A partir de Apache Kafka 3.0, Producer habilita las garantías de entrega más sólidas de forma predeterminada. Eso significa que los usuarios obtienen pedidos y durabilidad de forma predeterminada.

Además, no se pierda las mejoras de reinicio de tareas de Kafka Connect, las mejoras de Kafka Streams en la sincronización basada en marcas de tiempo y las opciones de configuración más flexibles de MirrorMaker2.

Para revisar la lista completa de funciones y mejoras, asegúrate de leer las notas de la versión.

¿Qué es Apache Kafka?

Apache Kafka es una implementación de marco de un bus de software que utiliza procesamiento de flujo. Una plataforma de software de código abierto desarrollada por la Fundación Apache escrita en Scala y Java.

Historia de Apache Kafka

Kafka se desarrolló originalmente en LinkedIn y posteriormente, fue de código abierto a principios de 2011.

Jay Kreps, Neha Narkhede y Jun Rao ayudaron a co-crear Kafka, quien luego abandonó LinkedIn para construir Confluent.

Jay Kreps eligió nombrar el software en honor al autor Franz Kafka porque es “un sistema optimizado para la escritura” y le gustó el trabajo de Kafka.

¿Qué aplicaciones tiene Apache Kafka?

Apache Kafka se basa en el registro de confirmación y permite a los usuarios suscribirse y publicar datos en cualquier número de sistemas o aplicaciones en tiempo real.

Las aplicaciones de ejemplo incluyen administrar la coincidencia de pasajeros y conductores en Uber, proporcionar análisis en tiempo real y mantenimiento predictivo para el hogar inteligente de British Gas y realizar numerosos servicios en tiempo real en todo LinkedIn.

¿Cómo es la arquitectura de Apache Kafka?

Kafka almacena mensajes de valor-clave que provienen arbitrariamente de muchos procesos llamados productores. Los datos se pueden dividir en diferentes “particiones” dentro de diferentes “temas”.

Dentro de una partición, los mensajes se ordenan estrictamente por sus compensaciones (la posición de un mensaje dentro de una partición) y se indexan y almacenan junto con una marca de tiempo. Otros procesos llamados “consumidores” pueden leer mensajes de particiones.

Para el procesamiento de transmisiones, Kafka ofrece la API de transmisiones que permite escribir aplicaciones Java que consumen datos de Kafka y escriben los resultados en Kafka.

Apache Kafka también funciona con sistemas de procesamiento de flujo externos como Apache Apex, Apache Flink o Apache Spark.

Kafka se ejecuta en un clúster de uno o más servidores (llamados intermediarios) y las particiones de todos los temas se distribuyen entre los nodos del clúster. Además, las particiones se replican en varios agentes.

Esta arquitectura permite a Kafka entregar flujos masivos de mensajes de manera tolerante a fallas y le ha permitido reemplazar algunos de los sistemas de mensajería convencionales como Java Message Service (JMS), Advanced Message Queue Server Protocol (AMQP), etc.

Desde la versión 0.11. 0.0 Kafka ofrece escrituras transaccionales que proporcionan procesamiento de flujo exactamente una vez utilizando la API de Streams.

APIs existentes dentro de Apache Kafka

Existen cinco API principales en Kafka:

  • API de Producción: Que permite que una aplicación publique flujos de registros.
  • API de Consumidor: Que permite que una aplicación se suscriba a temas y procese flujos de registros.
  • API de Conector: Que ejecuta las API de consumidor y productor reutilizables que pueden vincular los temas a las aplicaciones existentes.
  • API de Transmisiones: Esta API convierte las transmisiones de entrada en salida y produce el resultado.
  • API de Administración: Se utiliza para gestionar temas de Kafka, agentes y otros objetos de Kafka.

Las API de consumidor y productor se basan en el protocolo de mensajería de Kafka y ofrecen una implementación de referencia para los clientes consumidores y productores de Kafka en Java.

El protocolo de mensajería subyacente es un protocolo binario que los desarrolladores pueden utilizar para escribir sus propios clientes consumidores o productores en cualquier lenguaje de programación. Esto desbloquea a Kafka del ecosistema Java Virtual Machine (JVM).

En la wiki de Apache Kafka se mantiene una lista de clientes disponibles que no son de Java.


Artículos Relacionados