Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Kafka, un sistema de publicación distribuida

Daniel Ortego Delgado
  • Escrito por Daniel Ortego Delgado el 27 de Octubre de 2016
  • 2 min de lectura | Servers
Kafka, un sistema de publicación distribuida

Apache Kafka está creando una revolución en los últimos tiempos. A pesar de ser un proyecto creado por los ingenieros de LinkedIn en 2011, muchas compañías se han subido al carro y están utilizando esta herramienta, como es el caso de Twitter, Netflix, Spotify, Pinterest, PayPal o Airbnb, por citar algunas de las más importantes. Desde el año 2012 pertenece al grupo Apache.

¿Qué es Kafka?

Kafka es un sistema que, aunque a priori pueda parecer muy simple, sorprende por su profundidad a nivel técnico cuando se empiezas conocerlo. Podemos decir que Kafka es un sistema distribuido de mensajería de publicación-suscripción, diseñado para ser rápido, duradero y escalable.

Como otros sistemas similares, Kafka guarda los mensajes por temas. Los mensajes son simples arrays en los que los desarrolladores pueden almacenar cualquier objeto en múltiples formatos (los más comunes son String o JSON). Es posible aplicarle una clave o key a los mensajes para garantizar que los mensajes con esa key llegarán a la misma partición. Lo que hace único a Kafka es que trata cada partición de temas como un registro (un conjunto ordenado de mensajes). Con esta herramienta el interés no se centra en saber qué mensajes han sido leídos o no por los usuarios, sino que su misión es guardar los mensajes durante un período de tiempo para que los lectores puedan encontrarlos en cada registro.

¿Cómo trabaja Kafka?

Supongamos que estamos desarrollando un juego online multijugador en el que los usuarios cooperan y compiten entre sí, y a veces incluso intercambian ítems y dinero; los desarrolladores deben asegurarse de que los jugadores no engañan. Los técnicos pueden comprobar si un jugador mercadea más de lo habitual o si usa diferentes IPs en cada sesión. Por ello se puede memorizar un número significativo de las últimas partidas de cada jugador para saber si se está cometiendo alguna infracción. Los servidores por tanto tendrían dos roles: por un lado, almacenar la información en tiempo real, y por otro lado, procesarla y evitar los abusos. El historial de intercambios de cada jugador por tanto debe ir en un único servidor, diferenciado del que almacena el historial de sesiones. Aquí es donde interviene Kafka, como plataforma para el traslado de mensajes entre servidores.

Imagen 0 en Kafka, un sistema de publicación distribuida


Otros usos de Kafka

  • Seguimiento de actividad de la web. La aplicación envía eventos como páginas vistas o búsquedas realizadas, que están disponibles en tiempo real.
  • Métricas operativas. Alerta y reporta métricas operacionales. El servicio puede ser utilizado para comparar recuentos y alertar si se produce la pérdida de datos.
  • Agregar registros. Se pueden recopilar registros de múltiples servicios que están disponibles en formato estándar para los consumidores, incluyendo Hadoop y Apache Solr.
  • Procesamiento stream. Un framework como Spark Streaming lee datos de un tema, los procesa y escribe los nuevos datos procesados en otro tema que estará disponible para los usuarios y aplicaciones.

Conclusión

Como se puede ver, Kafka tiene un diseño único que lo hace muy útil para resolver una amplia gama de retos en cuanto a la arquitectura interna. Es importante asegurarse de que se utilizan las herramientas más adecuadas para cada uso y que se hace correctamente. Así se garantiza un alto rendimiento, una baja latencia, alta disponibilidad, y no hay pérdida de datos.

Si quieres aprender más sobre este sistema mira nuestro Curso de Kafka.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars