Intercambio de datos en tiempo real para las aplicaciones más exigentes con Apache Kafka

4min

Cuando hablamos de mensajería, lo primero que se nos viene a la cabeza son las numerosas aplicaciones que utilizamos  habitualmente para ponernos en contacto con otras personas. Sin embargo, Apache Kakfa no va de eso. Esta herramienta para desarrolladores, que podemos instalar muy fácilmente en los Servidores Cloud de Arsys, es una plataforma que distribuye datos entre aplicaciones a gran velocidad y de manera estable y escalable, facilitando las tareas de los aplicativos que intercambian datos en tiempo real, como Big Data o Internet de las Cosas (IoT), y que las organiza de manera parecida a los mensajes.

Kafka permite publicar los mensajes de datos procedentes de las aplicaciones en un flujo, así como suscribirse a los mensajes generados, igual que cualquier otro sistema de colas de mensajes existentes. Pero, además, permite almacenar los mensajes en un sistema tolerante a fallos y consumir los streams de mensajes por aplicaciones en el instante en el que se produzcan.

Es un sistema abierto, Open Source y gratuito para cualquier uso, al que se extraerá el valor usándolo como una pieza en el desarrollo de aplicaciones complejas, que involucren a diversos sistemas que deban trabajar sincronizados en tiempo real. Con Kafka podemos crear aplicaciones modernas, capaces de reaccionar a sucesos ocurridos en otros sistemas y procesar o transformar los datos generados en los flujos. Está pensado para un funcionamiento en la Nube, ya que está preparado para funcionar en clusters de servidores, creados por una o más máquinas capaces de trabajar juntas. Cada mensaje en un stream está compuesto por un par clave-valor y  se utilizan «topics», una especie de categorías o temas, para la organización de los mensajes.

Índice

Las API de Kafka

Para trabajar con Kafka se encuentran disponibles diversas API que facilitan las operaciones habituales con el sistema, tanto en la producción como el consumo de los mensajes. Existen API para diversos lenguajes de programación, los más populares en la industria, enfocados tanto a la web, apps de dispositivos, o programas de propósito general. Algunos ejemplos son C/C++, Python, PHP, .NET, Ruby, NodeJS o Java.

No obstante, las comunicaciones están implementadas mediante el protocolo TCP, por lo que cualquier lenguaje capaz de interpretar este protocolo será capaz de trabajar con el sistema de mensajería para realizar todo tipo de operaciones. Incluso hay un API que se puede usar como Proxy, mediante el cual podemos realizar todo tipo de operaciones por medio de HTTP REST.

Las API están divididas según el uso que vayamos a realizar de Kafka:

  • API para apps productoras de mensajes, que publican mensajes en el cluster
  • API para consumidores de mensajes, que son apps capaces de suscribirse a uno o más tópicos y recibir notificación en tiempo real de los mensajes producidos, para su procesamiento.
  •  Stream API, que son aplicaciones que actúan como procesadores de flujos, produciendo y consumiendo mensajes, o transformando mensajes producidos por otras fuentes para la distribución en nuevos flujos.
  • Por último, los Conector API  capaces de operar en una dirección, o bien como consumidores o bien como productores de mensajes, conectando a Kafka con orígenes de datos diversos. Por ejemplo, podríamos disponer de un productor de mensajes que enviase un registro al cluster cuando se realiza un cambio en una tabla de una base de datos relacional.

Kafka en la Nube

Para obtener el partido a este software es necesario implementarlo en la Nube, ofreciendo servicio a todo tipo de aplicaciones través de Internet. Ya viene preparado para instalarlo en uno o más servidores, facilitando la operativa en entornos distribuidos donde sea importante la replicación de los datos y la tolerancia a fallos.

Otro de los factores fundamentales es la escalabilidad del sistema, pudiendo crecer tanto aumentando los recursos de los servidores como añadiendo nuevos servidores al cluster. Para ello, es especialmente interesante su instalación en entornos Cloud, donde podemos asignar fácilmente nuevos recursos al servidor o agregar rápidamente nuevos servidores a un cluster existente. Y si queremos instalarlo en los Servidores Cloud de Arsys, no tenemos más que seleccionarlo desde el Catálogo de Aplicaciones o en el Panel de Control de Cloudbuilder Next. En sólo unos segundos, tendremos desplegada la última versión estable de Kafka sobre CentOS.

Manuel León

Productos relacionados: