Pasar al contenido principal
Cargando...

Iggy.rs

Inspiring technology by Hunters

En esta nueva edición de Inspiring Technology, nuestros Hunters nos hablan de Iggy, una plataforma de transmisión de mensajes persistentes diseñada para manejar flujos de datos en tiempo real. ¡Sigue leyendo!

Iggy funciona como un sistema de "append-only log", donde los mensajes se añaden sin modificaciones o eliminaciones, lo que permite una estructura de datos confiable y orientada a la secuencialidad.

A diferencia de otros sistemas, esta plataforma es ligera y tiene un enfoque directo para su configuración, lo que lo convierte en una opción atractiva para entornos donde no se requiere una infraestructura tan compleja como Kafka o RabbitMQ. Esta simplicidad puede reducir costes de implementación y la carga en los recursos del sistema, haciéndolo adecuado para aplicaciones con requisitos de baja latencia o sin necesidades avanzadas de durabilidad de mensajes.

Similitudes con Kafka o RabbitMQ

Iggy comparte similitudes clave con otros sistemas de mensajería como Kafka y RabbitMQ en aspectos esenciales de transmisión y procesamiento de mensajes. Al igual que Kafka, permite la transmisión de datos en tiempo real mediante el uso de "topics" y particiones, organizando los mensajes de manera que los consumidores puedan leerlos de forma eficiente. Esto también posibilita la paralelización, ya que los mensajes en diferentes particiones pueden ser procesados simultáneamente por consumidores en paralelo.

Por otro lado, Iggy tiene algunas características en común con RabbitMQ, como la simplicidad de configuración en entornos más pequeños y la posibilidad de ofrecer una opción ligera para aplicaciones que no requieren escalabilidad masiva. Al igual que RabbitMQ, Iggy puede ser adecuado para desarrolladores que prefieren un sistema de mensajería de menor complejidad y que facilite la implementación rápida en aplicaciones menos dependientes de tolerancia a fallos a nivel de red distribuida.

Funcionamiento básico Iggi-CLI

La CLI de Iggy permite a los desarrolladores interactuar con el servidor mediante comandos de consola sencillos, como crear streams y topics o enviar mensajes, lo cual facilita la administración y pruebas rápidas sin configuraciones adicionales.

Flowfile

Funcionamiento básico web ui

Iggy tiene una excelente integración con Java gracias a las librerías que han desarrollado. Estas librerías permiten realizar cualquier operación que se puede llevar a cabo con la herramienta CLI mencionada anteriormente, como, por ejemplo, crear un productor y un consumidor básicos, además de gestionar su topic y stream.

Arquitectura

Funcionamiento productor consumidor Java

La interfaz de usuario (UI) de Iggy ofrece una manera visual de gestionar los mensajes y los topics, pero actualmente está en desarrollo, lo que puede ocasionar ciertos errores en algunas funciones.

Arquitectura

Arquitectura:

Iggy se basa en un concepto principal: el registro de solo anexión (Append-only log). Esta es una estructura de datos que solo permite operaciones de solo anexión, es decir, los datos solo pueden ser agregados en la estructura en el orden en que se reciben y no pueden ser ni eliminados ni modificados una vez añadidos. Esto es esencial para garantizar la inmutabilidad y el orden de los datos.

Una vez entendido esto, podemos pasar a explicar la estructura general que sigue esta plataforma:

  1. Stream: Es un espacio lógico donde se agrupan los topics relacionados. Puede contener uno o más topics. Cada stream se identifica con un ID.
  2. Topic: Es una entidad lógica que agrupa mensajes de un tipo específico. Es la encargada de almacenar particiones.
  3. Partition: Una partición es donde se almacenan los registros (mensajes) y forman parte de los topics. Una partición actúa como una base de datos simple, pero con operaciones de solo anexión. El orden de los registros dentro de una partición está garantizado, pero entre particiones no lo está. Las particiones son independientes, lo que permite que cada partición pueda ser consumida por un consumidor diferente y escalado horizontal.
  4. Segment: Es una parte de la partición. Actúa como la capa física real donde se almacenan los registros en formato binario, en forma de archivos.

Comparación rendimiento Iggy vs Kafka

Tabla 1: Promedio de mensajes enviados por intervalo de tiempo (100 muestras).

En esta tabla podemos ver que el número de mensajes enviados en Kafka es mucho mayor que en Iggy independientemente del intervalo de tiempo, también podemos ver que el número de mensajes enviados por segundo no aumenta si el intervalo de tiempo es mayor.

Tabla 2: Promedio de tiempo (milisegundos) por envío de mensajes.

En esta segunda tabla podemos observar de nuevo que Kafka tarda menos tiempo en enviar un determinado número de mensajes, esto es importante ya que como vemos, cuando pasa de un cierto volumen de mensajes, el uso de Iggy no es el más óptimo.

Como conclusión final en la comparativa de rendimientos, queda demostrado que Kafka tiene un rendimiento bastante mayor que el de Iggy, como apuntábamos en la comparación previa, esto es debido a su estructura interna y a como están diseñados.

Finalmente, con este estudio de la herramienta Iggy, podemos concluir que es una herramienta muy interesante para usar en sistemas pequeños o ligeros donde no se requiera un volumen de datos muy grande, o latencias muy bajas. Es ideal por su facilidad de configuración e implementación, además de la integración con nuestro sistema y facilidad de despliegue. Recordando que es una herramienta que está en desarrollo, tiene mucho potencial y muchas oportunidades en un futuro.

¿Quieres saber más sobre Hunters?

Ser un hunter es aceptar el reto de probar nuevas soluciones que aporten resultados diferenciales. Únete al programa Hunters y forma parte de un grupo transversal con capacidad de generar y transferir conocimiento.

Anticípate a las soluciones digitales que nos harán crecer. Consulta más información sobre Hunters en la web.

Francisco Fernández
Técnico de Software
Altia