3 Punkte von GN⁺ 2024-01-06 | 1 Kommentare | Auf WhatsApp teilen

Ursprung

  • Im April 2023 fiel die Entscheidung, Rust zu lernen.
  • Auf Basis von Erfahrungen mit verteilten Systemen und Messaging fiel die Entscheidung, eine Message-Streaming-Plattform zu entwickeln.
  • Ziel war es, die interne Funktionsweise von Messaging-Systemen und die Trade-offs von Entwicklern zu verstehen.
  • Daraus entstand Iggy.rs, mit dem Ziel einer Message-Streaming-Plattform, die Geschwindigkeit und Leichtgewichtigkeit betont.

Projekt

  • Das frühe Iggy bot grundlegende Funktionen für den Nachrichtenaustausch auf Basis des QUIC-Protokolls.
  • Durch kontinuierliches Prototyping und Verbesserungen wurde ein Server mit parallelem Schreiben/Lesen und Unterstützung unabhängiger Streams umgesetzt.
  • Durch die zusätzliche Unterstützung für TCP- und HTTP-Protokolle sowie die Optimierung des Datensynchronisierungsmechanismus wurde die Performance verbessert.
  • Benchmarking bestätigte hohen Durchsatz und geringe Latenz, woraufhin das Projekt zu einem langfristigen Vorhaben wurde.

Team

  • Iggy wird von einem Team mit rund 10 Mitgliedern getragen, das zu verschiedenen Bereichen beiträgt.
  • Beteiligt sind Projekte wie Core-Server, SDK, Web-UI und CLI.
  • Entwickler mit unterschiedlichen Hintergründen und gemeinsamer Leidenschaft fürs Programmieren beteiligen sich freiwillig.
  • Die Mitarbeit externer Contributor aus aller Welt stärkte das Vertrauen in das Projekt.

Funktionen

  • Hochperformanter, langlebiger, logbasierter Message-Streaming-Server.
  • Hoher Durchsatz, geringe Latenz und vorhersehbare Ressourcennutzung dank der kompilierten Sprache Rust.
  • Unterstützung für mehrere Streams, Topics und Partitionen sowie verschiedene Transportprotokolle.
  • RESTful API, Client-SDKs für verschiedene Sprachen und direkte Arbeit mit Binärdaten.
  • Konfigurierbare Serverfunktionen, serverseitige Speicherung von Consumer-Offsets und Unterstützung verschiedener Methoden zum Polling von Nachrichten.
  • Consumer-Gruppen für Nachrichtenreihenfolge und horizontale Skalierung sowie Funktionen für Nachrichtenablauf und Deduplizierung.
  • TLS-Unterstützung für alle Transportprotokolle, optionale Datenverschlüsselung und Unterstützung für Message-Header.
  • Integrierte CLI und Benchmarking-App zur Verwaltung des Streaming-Servers, Bereitstellung als einzelne Binärdatei.

Roadmap

  • Nach dem Erscheinen auf der GitHub-Trending-Seite wurden mit Nutzern Diskussionen über zusätzliche Funktionen geführt.
  • Ziel ist es, Performance und Zuverlässigkeit durch Clustering, Low-Level-I/O und eine Thread-pro-Core-Architektur zu verbessern.
  • Geplant sind Experimente mit dem Raft-Konsensmechanismus, Verbesserungen bei I/O-Operationen mit io_uring und der Einsatz der monoio-Runtime.

Zukunft

  • Ziel ist eine Message-Streaming-Plattform für allgemeine Einsatzzwecke, die die Grenzen von Betriebssystemen und Hardware herausfordert.
  • Geplant ist eine einfach zu nutzende integrierte Plattform mit Unterstützung für verschiedene Programmiersprachen, CLI und Web-UI.
  • Die Weiterentwicklung soll durch Feedback und Ideen aus der Community vorangetrieben werden.

GN⁺-Meinung

  • Iggy.rs ist eine Rust-basierte Message-Streaming-Plattform, die auf hohe Performance und geringe Latenz abzielt.
  • Als Open-Source-Projekt wächst sie kontinuierlich durch freiwillige Beteiligung und Beiträge von Entwicklern aus aller Welt.
  • Das ambitionierte Ziel, mit innovativen Technologien wie Clustering, Low-Level-I/O-Optimierung und einer Thread-pro-Core-Architektur die Performance-Grenzen verteilter Systeme zu überwinden, ist besonders spannend und macht das Projekt für Interessierte in diesem Bereich sehr lohnend.

1 Kommentare

 
GN⁺ 2024-01-06
Hacker-News-Kommentare
  • Was ursprünglich das Interesse am Softwarebereich geweckt hat, war nicht Geld, sondern das Ideal von Menschen, die auf ein gemeinsames Ziel hinarbeiten. Viel Glück für das Projekt, und hoffentlich helfen Vergleiche mit Alternativen dabei, die Position des Projekts besser zu verstehen.
  • Der Blogbeitrag gefällt mir, und der Autor wirkt wie ein bescheidener, ehrlicher und konstruktiver Projektleiter. Viel Glück für das Projekt.
  • Wirkt wie ein direkter Konkurrent zu JetStream und zeigt für weniger als ein Jahr Arbeit beeindruckende Fortschritte.
  • Ein Beitrag, der mich wieder über die Ursprünge von Fluvio nachdenken ließ: ein kleines Team mit jahrzehntelanger enger Beziehung zu datenorientierten Anwendungen in verschiedenen Bereichen, das von Daten-Streaming mit Rust und WebAssembly begeistert ist.
  • Der Vergleich mit Kafka und Fluvio (einem weiteren in Rust geschriebenen Kafka-Konkurrenten) ist nicht ganz klar, möglicherweise ist es eher eine Message Queue wie RabbitMQ.
  • Ich habe vor ein paar Jahren mit einem Freund etwas Ähnliches in Go gebaut.
  • Ich würde es gern ausprobieren, nachdem ich Rust gelernt habe, und mir gefällt die Ästhetik der Website.
  • Das Projekt ist interessant, aber bevor ich es ausprobiere, muss ich verstehen, wie man mehrere Serverinstanzen ausführt und wie die Interaktion des Dateisystems zwischen den Servern funktioniert.
  • Gegenüber dem Streaming von KeyDB sehe ich den Vorteil in einer robusteren Persistenz.
  • Die Wahl von monoio überrascht mich. Dafür ist ein Nightly-Compiler nötig, und ich halte das nicht für eine gute Entscheidung im Hinblick auf die Wartbarkeit des Projekts.