Articulo de referencia

Apache Kafka

{{cite web|url=https://github.com/apache/kafka|title=Apache Kafka at GitHub|work=github.com|access-date=5 March 2018|archive-date=16 January 2023|archive-url=https://web.archive...

Apache Kafka es una plataforma distribuida de almacenamiento de eventos y procesamiento de flujos de datos . Es un sistema de código abierto desarrollado por la Apache Software Foundation y escrito en Java y Scala . El proyecto tiene como objetivo proporcionar una plataforma unificada, de alto rendimiento y baja latencia para el manejo de flujos de datos en tiempo real. Kafka puede conectarse a sistemas externos (para la importación/exportación de datos) a través de Kafka Connect y proporciona las bibliotecas Kafka Streams para aplicaciones de procesamiento de flujos de datos. Kafka utiliza un protocolo binario basado en TCP optimizado para la eficiencia y se basa en una abstracción de "conjunto de mensajes" que agrupa naturalmente los mensajes para reducir la sobrecarga del viaje de ida y vuelta de la red. Esto "conduce a paquetes de red más grandes, operaciones de disco secuenciales más grandes, bloques de memoria contiguos [...] lo que permite a Kafka convertir un flujo intermitente de escrituras de mensajes aleatorias en escrituras lineales". [ 4 ]

Historia

Kafka se desarrolló originalmente en LinkedIn y posteriormente se publicó como código abierto a principios de 2011. Jay Kreps, Neha Narkhede y Jun Rao ayudaron a cocrear Kafka. [ 5 ] La graduación de la Incubadora Apache tuvo lugar el 23 de octubre de 2012. [ 6 ] Jay Kreps eligió nombrar el software en honor al autor Franz Kafka porque es "un sistema optimizado para escribir" y le gustaba el trabajo de Kafka. [ 7 ]

Operación

Apache Kafka es un sistema de mensajería distribuido basado en registros que garantiza el orden dentro de particiones individuales en lugar de en todo el tema. A diferencia de los sistemas basados ​​en colas, Kafka conserva los mensajes en un registro persistente de solo escritura, lo que permite que múltiples consumidores lean en diferentes desplazamientos. Kafka utiliza la gestión manual de desplazamientos, lo que otorga a los consumidores control sobre los reintentos y el manejo de fallos. Si un consumidor no puede procesar un mensaje, puede retrasar la confirmación del desplazamiento, impidiendo el progreso en esa partición mientras que las demás permanecen inalteradas. Este diseño basado en particiones permite el aislamiento de fallos y el procesamiento paralelo, al tiempo que permite mantener el orden dentro de las particiones, según el manejo por parte del consumidor. [ 8 ]

En 2025, Apache Kafka introdujo "Queues for Kafka" [ 9 ] , añadiendo grupos de compartición como alternativa a los grupos de consumidores. Esta función permite una semántica similar a la de las colas, donde los consumidores pueden procesar registros de las mismas particiones de forma cooperativa, con acuse de recibo y seguimiento de entrega de mensajes individuales. A diferencia de los grupos de consumidores tradicionales, donde las particiones se asignan exclusivamente, los grupos de compartición permiten que el número de consumidores supere el número de particiones, lo que los hace ideales para patrones de colas de trabajo, manteniendo al mismo tiempo las ventajas de durabilidad y escalabilidad de Kafka. Este desarrollo aborda el problema común de la "sobrepartición" al que se enfrentan muchos usuarios de Kafka.

API de Kafka

API de conexión

Kafka Connect (o API Connect) es un marco de trabajo para importar/exportar datos desde/hacia otros sistemas. [ 10 ] Se añadió en la versión 0.9.0.0 de Kafka y utiliza internamente las API Producer y Consumer. El propio marco de trabajo Connect ejecuta los llamados "conectores" que implementan la lógica para leer/escribir datos desde otros sistemas.

API de flujos

Kafka Streams (o API de Streams) es una biblioteca de procesamiento de flujos escrita en Java. Se añadió en la versión 0.10.0.0 de Kafka. La biblioteca permite el desarrollo de aplicaciones de procesamiento de flujos con estado que son escalables, elásticas y totalmente tolerantes a fallos. La API principal es un lenguaje específico de dominio (DSL) para el procesamiento de flujos que ofrece operadores de alto nivel como filtrar, mapear , agrupar, crear ventanas, agregar, unir y el concepto de tablas. Además, la API del procesador se puede utilizar para implementar operadores personalizados para un enfoque de desarrollo de nivel más bajo. El DSL y la API del procesador también se pueden combinar. Para el procesamiento de flujos con estado, Kafka Streams utiliza RocksDB para mantener el estado local de los operadores. Dado que RocksDB puede escribir en disco, el estado mantenido puede ser mayor que la memoria principal disponible. Para la tolerancia a fallos, todas las actualizaciones de los almacenes de estado locales también se escriben en un tema del clúster de Kafka. Esto permite recrear el estado leyendo esos temas y alimentando todos los datos a RocksDB. [ 11 ]

Véase también

Referencias

  1. "Apache Kafka en GitHub" . github.com . Archivado del original el 16 de enero de 2023. Consultado el 5 de marzo de 2018 .
  2. "Liberar Kafka, la cola de mensajes distribuidos de LinkedIn", de código abierto . Archivado del original el 26 de diciembre de 2022. Consultado el 27 de octubre de 2016 .
  3. "Versión 4.3.1" . 23 de junio de 2026. Consultado el 24 de junio de 2026 .
  4. "Eficiencia" . kafka.apache.org . Consultado el 19 de septiembre de 2019 .
  5. Li, Steven. "Dejó su trabajo bien remunerado en LinkedIn y luego construyó un negocio de 4.500 millones de dólares en un nicho del que nunca has oído hablar" . Forbes . Consultado el 2 de diciembre de 2025 .
  6. "Incubadora Apache: Estado de la incubación de Kafka" . Archivado del original el 17 de octubre de 2022. Consultado el 17 de octubre de 2022 .
  7. Narkhede, Neha; Shapira, Gwen; Palino, Todd (2017). «Capítulo 1». Kafka: La guía definitiva . O'Reilly. ISBN 978-1-4919-3611-5La gente suele preguntar cómo surgió el nombre de Kafka y si tiene algo que ver con la aplicación en sí. Jay Kreps ofreció la siguiente explicación: " Pensé que, dado que Kafka era un sistema optimizado para la escritura, el nombre de un escritor tendría sentido. Había cursado muchas clases de literatura en la universidad y me gustaba Franz Kafka".
  8. Narkhede, Neha; Shapira, Gwen; Palino, Todd (2017). Kafka: la guía definitiva: procesamiento de datos y flujos en tiempo real a gran escala . Sebastopol, CA: O'Reilly Media. ISBN 978-1-4919-3616-0OCLC 933521388 
  9. "KIP-932: Colas para Kafka - Apache Kafka - Apache Software Foundation" . cwiki.apache.org . Consultado el 2 de diciembre de 2025 .
  10. "Documentación de Apache Kafka: Kafka Connect" . Apache .
  11. "Kafka Connect – Importación y exportación para Apache Kafka" . SoftwareMill . Consultado el 8 de mayo de 2025 .
  • Sitio web oficialEdita esto en Wikidata
Obtenido de " https://en.wikipedia.org/w/index.php?title=Apache_Kafka&oldid=1352523376 "