3 points par GN⁺ 2024-01-06 | 1 commentaires | Partager sur WhatsApp

Origines

  • En avril 2023, la décision a été prise d’apprendre Rust.
  • Sur la base d’une expérience des systèmes distribués et de la messagerie, le développement d’une plateforme de message streaming a été lancé.
  • L’objectif était de comprendre le fonctionnement interne des systèmes de messagerie et les compromis faits par les développeurs.
  • Naissance d’Iggy.rs, avec l’ambition de créer une plateforme de message streaming mettant l’accent sur la vitesse et la légèreté.

Projet

  • Au départ, Iggy utilisait le protocole QUIC pour fournir des fonctions de base d’échange de messages.
  • Grâce à un prototypage continu et à des améliorations successives, un serveur prenant en charge les écritures/lectures parallèles et des flux indépendants a été mis en place.
  • La prise en charge des protocoles TCP et HTTP a été ajoutée, et les performances ont été améliorées via l’optimisation des mécanismes de synchronisation des données.
  • Les benchmarks ont confirmé un débit élevé et une faible latence, ce qui a conduit à en faire un projet de long terme.

Équipe

  • Iggy est porté par une équipe d’environ 10 membres contribuant à différentes parties du projet.
  • Ils participent à divers sous-projets, notamment le serveur core, les SDK, l’interface web et la CLI.
  • Des développeurs aux expériences variées, partageant une passion pour la programmation, y contribuent de manière volontaire.
  • La participation de contributeurs externes venus du monde entier a renforcé la confiance dans le projet.

Fonctionnalités

  • Serveur de message streaming haute performance, durable et basé sur des logs.
  • Débit élevé, faible latence et utilisation prévisible des ressources grâce à Rust, un langage compilé.
  • Prise en charge de multiples streams, topics, partitions et de divers protocoles de transport.
  • API RESTful, SDK clients dans plusieurs langages et travail direct avec des données binaires.
  • Fonctions serveur configurables, stockage côté serveur des offsets des consommateurs et prise en charge de plusieurs méthodes de polling des messages.
  • Groupes de consommateurs pour garantir l’ordre des messages et l’extension horizontale, avec expiration des messages et déduplication.
  • Prise en charge de TLS pour tous les protocoles de transport, chiffrement optionnel des données et support des en-têtes de message.
  • CLI intégrée et application de benchmarking pour administrer le serveur de streaming, avec déploiement sous forme de binaire unique.

Feuille de route

  • Après son apparition sur la page GitHub Trending, des discussions ont eu lieu avec les utilisateurs autour de l’ajout de nouvelles fonctionnalités.
  • L’objectif est d’améliorer les performances et la fiabilité grâce au clustering, à l’I/O bas niveau et à une architecture un thread par cœur.
  • Des expérimentations sont prévues autour du mécanisme de consensus Raft, de l’amélioration des opérations d’I/O avec io_uring et de l’utilisation du runtime monoio.

Avenir

  • L’objectif est de devenir une plateforme de message streaming généraliste et de repousser les limites des systèmes d’exploitation et du matériel.
  • Le projet prévoit de proposer une plateforme intégrée facile à utiliser, avec prise en charge de plusieurs langages de programmation, d’une CLI et d’une interface web.
  • Il vise à évoluer grâce aux retours et aux idées de la communauté.

Avis de GN⁺

  • Iggy.rs est une plateforme de message streaming basée sur Rust, qui vise des performances élevées et une faible latence.
  • En tant que projet open source, il continue de croître grâce à la participation et aux contributions volontaires de développeurs du monde entier.
  • Son ambition de dépasser les limites de performance des systèmes distribués grâce à des technologies innovantes comme le clustering, l’optimisation des I/O bas niveau et une architecture un thread par cœur est particulièrement intéressante, ce qui en fait un projet très utile pour toute personne intéressée par ce domaine.

1 commentaires

 
GN⁺ 2024-01-06
Avis Hacker News
  • Ce qui m’a d’abord attiré vers le logiciel, ce n’était pas l’argent, mais l’idéal de personnes travaillant ensemble vers un objectif commun. Bonne chance au projet, et j’espère qu’une comparaison avec les alternatives permettra de mieux situer sa place.
  • J’aime bien ce billet de blog, et l’auteur semble être un responsable de projet humble, honnête et constructif. Bonne chance au projet.
  • Cela ressemble à un concurrent direct de JetStream, avec des progrès impressionnants pour moins d’un an de travail.
  • Ce post m’a fait repenser aux origines de Fluvio : une petite équipe, liée depuis des décennies aux applications centrées sur les données dans divers domaines, enthousiasmée par le data streaming avec Rust et WebAssembly.
  • La comparaison avec Kafka et Fluvio (un autre concurrent de Kafka écrit en Rust) n’est pas très claire, et il pourrait aussi s’agir d’une file de messages comme RabbitMQ.
  • Il y a quelques années, j’ai construit quelque chose de similaire en Go avec un ami.
  • J’aimerais essayer après avoir appris Rust, et j’aime l’esthétique du site.
  • Le projet est intéressant, mais avant de l’essayer, j’ai besoin de comprendre comment exécuter plusieurs instances du serveur et comment fonctionne l’interaction du système de fichiers entre les serveurs.
  • Par rapport au streaming de KeyDB, j’y verrais comme avantage une persistance plus robuste.
  • Le choix de monoio me surprend. Cela oblige à utiliser le compilateur nightly, et je ne pense pas que ce soit un bon choix pour la maintenance du projet.