3 puntos por GN⁺ 2024-01-06 | 1 comentarios | Compartir por WhatsApp

Origen

  • En abril de 2023, decidió aprender Rust.
  • Con base en su experiencia en sistemas distribuidos y mensajería, decidió desarrollar una plataforma de streaming de mensajes.
  • El objetivo era entender el funcionamiento interno de los sistemas de mensajería y los trade-offs que enfrentan los desarrolladores.
  • Así nació Iggy.rs, con la meta de ser una plataforma de streaming de mensajes enfocada en la velocidad y la ligereza.

Proyecto

  • Al inicio, Iggy usaba el protocolo QUIC para ofrecer funciones básicas de intercambio de mensajes.
  • Mediante prototipado y mejoras continuas, se implementó un servidor con soporte para escritura/lectura en paralelo y flujos independientes.
  • Se agregó soporte para los protocolos TCP y HTTP, y se mejoró el rendimiento optimizando el mecanismo de sincronización de datos.
  • Las pruebas de benchmarking confirmaron un alto rendimiento y baja latencia, lo que llevó a convertirlo en un proyecto de largo plazo.

Equipo

  • Iggy cuenta con un equipo de unas 10 personas que contribuyen en distintas áreas.
  • Participan en diversos proyectos como el servidor central, los SDK, la web UI y la CLI.
  • Desarrolladores con experiencias diversas, unidos por su pasión por la programación, participan de manera voluntaria.
  • La participación de colaboradores externos de todo el mundo fortaleció la confianza en el proyecto.

Funciones

  • Servidor de streaming de mensajes de alto rendimiento, sostenible y basado en logs.
  • Alto throughput, baja latencia y uso predecible de recursos gracias al lenguaje compilado Rust.
  • Soporte para múltiples streams, topics y particiones, además de varios protocolos de transporte.
  • API RESTful, SDK de cliente en varios lenguajes y trabajo directo con datos binarios.
  • Funciones del servidor configurables, almacenamiento en el servidor de offsets de consumidores y soporte para diversos métodos de polling de mensajes.
  • Grupos de consumidores para orden de mensajes y escalado horizontal, además de expiración de mensajes y deduplicación.
  • Soporte de TLS para todos los protocolos de transporte, cifrado opcional de datos y soporte para headers de mensajes.
  • CLI integrada y app de benchmarking para administrar el servidor de streaming, con despliegue en un solo binario.

Hoja de ruta

  • Tras aparecer en la página de tendencias de GitHub, comenzaron las conversaciones con usuarios sobre nuevas funciones.
  • El objetivo es mejorar rendimiento y confiabilidad mediante clustering, I/O de bajo nivel y una arquitectura de un hilo por núcleo.
  • Se está experimentando con el mecanismo de consenso Raft, mejoras en operaciones de I/O con io_uring y el uso del runtime monoio.

Futuro

  • El objetivo es crear una plataforma de streaming de mensajes de propósito general y desafiar los límites del sistema operativo y del hardware.
  • Se planea ofrecer una plataforma integrada fácil de usar, con soporte para varios lenguajes de programación, CLI y web UI.
  • Se busca avanzar a partir del feedback y las ideas de la comunidad.

GN⁺ opina

  • Iggy.rs es una plataforma de streaming de mensajes basada en Rust, orientada a alto rendimiento y baja latencia.
  • Como proyecto de código abierto, sigue creciendo de forma constante gracias a la participación y contribución voluntaria de desarrolladores de todo el mundo.
  • Su ambiciosa meta de superar los límites de rendimiento en sistemas distribuidos mediante tecnologías innovadoras como clustering, optimización de I/O de bajo nivel y una arquitectura de un hilo por núcleo resulta especialmente interesante, y lo convierte en un proyecto muy valioso para quienes se interesan en este campo.

1 comentarios

 
GN⁺ 2024-01-06
Opiniones de Hacker News
  • Lo que despertó mi interés inicial en el software no fue el dinero, sino el ideal de personas esforzándose por un objetivo común. Le deseo suerte al proyecto y espero que, mediante comparaciones con las alternativas, pueda entenderse mejor dónde se posiciona.
  • Me gustó la publicación del blog, y el autor parece un líder de proyecto humilde, honesto y constructivo. Le deseo suerte al proyecto.
  • Parece un competidor directo de JetStream y muestra un avance impresionante para menos de un año de trabajo.
  • Es una publicación que me hizo volver a pensar en los orígenes de Fluvio: un equipo pequeño con una larga relación con aplicaciones centradas en datos en distintos campos durante décadas, entusiasmado por el streaming de datos usando Rust y WebAssembly.
  • No está clara la comparación con Kafka y Fluvio (otro competidor de Kafka escrito en Rust), aunque también podría ser una cola de mensajes como RabbitMQ.
  • Hace unos años hice algo parecido en Go con un amigo.
  • Quiero intentarlo después de aprender Rust, y me gusta la estética del sitio.
  • El proyecto es interesante, pero antes de probarlo necesito entender cómo ejecutar varias instancias del servidor y cómo funciona la interacción del sistema de archivos entre servidores.
  • Frente al streaming de KeyDB, pienso que una ventaja sería una persistencia más robusta.
  • Me sorprende la elección de monoio. Requiere usar el compilador nightly, y no me parece una buena decisión para el mantenimiento del proyecto.