3 puan yazan GN⁺ 2024-01-06 | 1 yorum | WhatsApp'ta paylaş

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_uring ile I/O işlerinin iyileştirilmesi ve monoio runtime'ı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

 
GN⁺ 2024-01-06
Hacker News yorumları
  • Beni ilk başta yazılım tarafına çeken şey bu tür hikâyelerdi
    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
    • Tam olarak böyle başladı ve bir gün diğer araçlarla benchmark ve karşılaştırmaları da eklemeyi umuyorum
  • Fikir de güzel, blog yazısı da güzel
    Yazar alçakgönüllü, dürüst ve yapıcı bir proje lideri gibi görünüyor
    • Ekip gerçekten harika
      Herkes bu çabaya biraz da eğlenmek için katılmaya karar verdi
  • QUIC ile başlamak gerçekten keskin ve akıllıca bir seçim gibi görünüyor
    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
    • Yeni bir şey denemek istediğim için QUIC ile başladım
      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ş
  • JetStream’in doğrudan rakibi gibi mi görünüyor? Bir yıldan kısa sürede bu kadar ilerleme etkileyici
    https://docs.nats.io/nats-concepts/jetstream
    • JetStream, Kafka, Redpanda, RabbitMQ Streams, Fluvio gibi mesaj akışı çözümleri oldukça fazla
  • Kafka ve Rust ile yazılmış Kafka rakibi Fluvio ile nasıl karşılaştırıldığını pek bilmiyorum
    RabbitMQ gibi bir mesaj kuyruğuna daha mı yakın?
    https://www.fluvio.io/
    • Bir mesaj akışı olduğu için Kafka, Redpanda ve RabbitMQ Streams eklentisine daha yakın
      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
    • Fluvio’nun hem Flink’in hem de Kafka’nın yerini almayı hedeflediğini sanıyordum? Daha yeni duydum, anlamaya çalışıyorum
  • Birkaç yıl önce bir arkadaşımla Go ile benzer bir şey yapmıştık
    https://github.com/thibauts/styx
    • Oldukça benzer görünüyor
      Neden üzerinde çalışmayı bırakttığınızı merak ettim
  • Bir gün denemek isterim. Ama önce Rust öğrenmem gerekecek gibi görünüyor
    Bu arada sitenin estetik anlayışını beğendim
    • Birden fazla SDK var ve blog, Rust Zola motorunu kullanıyor
    • Blog yazısında başka programlama dilleri için SDK’lardan söz ediliyor, yani kullanmak için Rust öğrenmeniz gerekmeyebilir
  • Bu yazı bana Fluvio’nun başlangıç noktasını yeniden açtırdı
    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ış
  • Gerçekten harika bir fikir ve proje
    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
    • Blog yazısında tek düğüm olarak çalıştığı yazıyor. Henüz cluster desteği yok
      Cluster desteği gelirse Kafka ile rekabet edebilir gibi görünüyor
  • monoio seçimi şaşırtıcı
    Bildiğim kadarıyla nightly derleyici gerekiyor ve bir projeyi bakımını yaparken bunun iyi bir tercih olduğunu düşünmüyordum
    • Nightly gerekiyor ama sadece beş özellik kullanılıyor; bunlardan biri harici bir crate eklenerek kaldırılabilir
      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
    • Monoio en yüksek performanslı runtime gibi görünüyor ve kullanımı da gerçekten kolay
      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