Iggy.rs - Rust ile inşa edilen mesaj akışı
(blog.iggy.rs)Köken
- Nisan 2023'te Rust öğrenmeye karar verildi.
- Dağıtık sistemler ve mesajlaşma konusundaki deneyime dayanarak bir mesaj akışı platformu geliştirmeye karar verildi.
- Amaç, mesajlaşma sistemlerinin iç çalışma mantığını ve geliştiricilerin yaptığı trade-off'ları anlamaktı.
- Böylece Iggy.rs doğdu; hız ve hafifliği öne çıkaran bir mesaj akışı platformu hedefi belirlendi.
Proje
- İlk Iggy, QUIC protokolünü kullanarak temel mesaj alışverişi işlevleri sundu.
- Sürekli prototipleme ve iyileştirmelerle paralel yazma/okuma ve bağımsız stream desteği sunan bir sunucu geliştirildi.
- TCP ve HTTP protokol desteği eklendi, veri senkronizasyon mekanizmaları optimize edilerek performans artırıldı.
- Benchmark sonuçları yüksek throughput ve düşük gecikmeyi doğruladı, bunun üzerine proje uzun vadeli bir çalışmaya dönüştü.
Ekip
- Iggy'ye yaklaşık 10 üyeden oluşan bir ekip farklı alanlarda katkı sağlıyor.
- Çekirdek sunucu, SDK'ler, web UI, CLI gibi çeşitli projelerde yer alıyorlar.
- Programlamaya tutkuyla bağlı, farklı deneyimlere sahip geliştiriciler gönüllü olarak katıldı.
- Dünyanın dört bir yanından gelen dış katkıcıların katılımı, projeye olan güveni artırdı.
Özellikler
- Yüksek performanslı, kalıcı log tabanlı bir mesaj akışı sunucusu.
- Yüksek throughput, düşük gecikme ve Rust'ın derlenen bir dil olarak öngörülebilir kaynak kullanımı.
- Çoklu stream, topic ve partition desteği ile çeşitli taşıma protokollerini destekleme.
- RESTful API, farklı diller için istemci SDK'leri ve ikili verilerle doğrudan çalışma.
- Sunucu özelliklerinin yapılandırılabilmesi, consumer offset'lerinin sunucuda saklanması ve mesaj polling için çeşitli yöntemler.
- Mesaj sıralaması ve yatay ölçekleme için consumer group'lar, mesaj süresi dolma ve deduplication özellikleri.
- Tüm taşıma protokolleri için TLS desteği, isteğe bağlı veri şifreleme ve mesaj header desteği.
- Akış sunucusunu yönetmek için yerleşik CLI ve benchmark uygulaması, tek bir binary olarak dağıtım.
Yol haritası
- GitHub Trending sayfasında yer aldıktan sonra kullanıcılarla yeni özellikler üzerine tartışmalar yapıldı.
- Clustering, düşük seviyeli I/O ve çekirdek başına thread mimarisiyle performans ve güvenilirliğin artırılması hedefleniyor.
- Raft mutabakat mekanizması üzerinde deneyler,
io_uringile I/O işlerinin iyileştirilmesi vemonoioruntime'ının kullanılması planlanıyor.
Gelecek
- Genel amaçlı bir mesaj akışı platformu oluşturmak ve OS ile donanım sınırlarını zorlamak hedefleniyor.
- Kullanımı kolay, birleşik bir platform olarak farklı programlama dillerini, CLI'yi ve web UI'yi destekleme planı var.
- Topluluktan gelen geri bildirim ve fikirlerle gelişmeye devam etmesi amaçlanıyor.
GN⁺'un görüşü
- Iggy.rs, yüksek performans ve düşük gecikmeyi hedefleyen Rust tabanlı bir mesaj akışı platformu.
- Açık kaynak bir proje olarak, dünyanın dört bir yanındaki geliştiricilerin gönüllü katılımı ve katkılarıyla sürekli büyüyor.
- Clustering, düşük seviyeli I/O optimizasyonu ve çekirdek başına thread mimarisi gibi yenilikçi teknolojilerle dağıtık sistemlerin performans sınırlarını aşmayı hedefleyen iddialı yaklaşımı ilgi çekici; bu alana ilgi duyanlar için oldukça faydalı bir proje.
1 yorum
Hacker News yorumları
Farklı nedenler olsa da aynı hedefe doğru birlikte çalışmak ve tek amacın yalnızca maddi ödül olmaması ideal geliyor
Projenin başarılı olmasını diliyorum; diğer alternatiflerle karşılaştırmalar da olursa bu projenin nerede konumlandığını daha iyi anlamak mümkün olur
Yazar alçakgönüllü, dürüst ve yapıcı bir proje lideri gibi görünüyor
Herkes bu çabaya biraz da eğlenmek için katılmaya karar verdi
SCTP’ye benzer şekilde faydalı çoklu akış desteği sunuyor, bu yüzden iyi bir başlangıç noktası; ayrıca hâlihazırda kullanılabilecek çok sayıda iyi kütüphane var ve ileride daha da iyi ve optimize hale gelme potansiyeli yüksek: https://github.com/xileteam/awesome-quic?tab=readme-ov-file#...
Zaten mevcut olandan biraz daha iyi bir taşıma protokolü kullanmanın bile büyük fayda sağladığı doğal bir alan, bu yüzden önümüzdeki 10 yıldaki QUIC heyecan verici
Ancak şu anki TCP protokolü uygulaması QUIC’ten biraz daha hızlı; bunun nedeni ek ayarların eksik olması olabilir
Ayrıca MacOS’ta QUIC, Linux’a kıyasla daha yavaş
https://docs.nats.io/nats-concepts/jetstream
RabbitMQ gibi bir mesaj kuyruğuna daha mı yakın?
https://www.fluvio.io/
Fluvio gerçek bir ürün ve arkasında bir şirket de var, dolayısıyla daha olgun; ama Iggy’yi rekabetçi bir mesaj akışı çözümü haline getirmek için kendine özgü fikirler var
https://github.com/thibauts/styx
Neden üzerinde çalışmayı bırakttığınızı merak ettim
Bu arada sitenin estetik anlayışını beğendim
Son birkaç on yıldır çeşitli alanlarda veri merkezli uygulamalarla uzun ilişkiler kurmuş küçük bir ekibiz ve Java ile JVM yerine Rust ve WebAssembly tabanlı veri akışına güveniyoruz
CTO’nun Haziran 2021’de Fluvio vizyonunu özetlediği yazı burada: https://news.ycombinator.com/item?id=38880743
Karşılaştırma soruları sürekli geldiği için Fluvio tarafındaki materyalleri de paylaşabilirim. Dokümantasyon işi uzun sürüyor ama elimizde olanları paylaşabiliriz. Iggy de gerçekten çok iyi bir iş çıkarmış
Ama denemeden önce iki şeyi anlamam gerekiyor gibi: sunucu instance’ını birden fazla nasıl çalıştırabiliyoruz ve birden fazla çalıştığında sunucular arasında dosya sistemi etkileşimi nasıl oluyor
Cluster desteği gelirse Kafka ile rekabet edebilir gibi görünüyor
Bildiğim kadarıyla nightly derleyici gerekiyor ve bir projeyi bakımını yaparken bunun iyi bir tercih olduğunu düşünmüyordum
Kalanların çoğu da çok uç özellikler değil. Koda derinlemesine bakmadım ama hepsi makul görünüyor. Örneğin biri, kopyalamayı ortadan kaldırmaya yardımcı olan, başlatılmamış container oluşturmak için standart kütüphane API’si
Stable’da çalışan glommio ile monoio’yu karşılaştırmadım ama ilginç olurdu
Bu yüzden bleeding edge yaklaşımını seçtim. Zaten io_uring ve diğer optimizasyonları uygulamak birkaç ay daha alacak ve bazı çekirdek kısımları yeniden yazarken çekirdek başına thread yapısına geçme ihtimalim yüksek