26 puan yazan xguru 2024-11-02 | 4 yorum | WhatsApp'ta paylaş
  • Non-Rust sunuculara (JavaScript, Python, Java vb.) kademeli olarak Rust ekleme stratejisini tanıtıyor
  • Amaç, CPU darboğazı nedeniyle performans gereksinimlerini karşılayamayan sıcak fonksiyonları belirleyip bunları Rust ile yeniden uygulamak
  • Strateji, Tier (Rust benimseme seviyesi) olarak ayrılıyor; Tier 0 Rust kullanılmayan durum, son Tier ise tüm sunucunun Rust ile yeniden yazılması

Strateji

Tier 0: Rust yok

  • Node.js sunucusunda QR kodu oluşturma endpoint'i uygulanıyor
  • Referans performans: saniyede 1464 istek, ortalama gecikme 68ms, p99 gecikme 96ms, ortalama yanıt boyutu 1506 bayt, bellek 1353MB

Tier 1: Rust CLI aracı

  • QR kodu oluşturma fonksiyonu Rust ile yeniden yazılıyor ve bir CLI aracı olarak derleniyor
  • Ana sunucu CLI aracını çağırıyor
  • Referansa kıyasla performans: saniyedeki istek sayısı 1.76 kat artıyor, ortalama gecikme 0.57 kata düşüyor, ortalama yanıt boyutu 0.52 kata düşüyor, bellek kullanımı 0.92 kata düşüyor

Tier 2: Rust Wasm modülü

  • Rust fonksiyonu bir Wasm modülü olarak derleniyor ve ana sunucuda Wasm runtime kullanılarak yüklenip çalıştırılıyor
  • Node.js sunucusunda wasm-bindgen kullanılıyor
  • Referansa kıyasla performans: saniyedeki istek sayısı 2.03 kat artıyor, ortalama gecikme 0.50 kata düşüyor
  • Wasm binding'lerini elle yazma yöntemi de anlatılıyor (diğer dil kullanıcıları için)

Tier 3: Rust native fonksiyonu

  • Fonksiyon Rust ile yazılıyor, native koda derleniyor, ana runtime içinde yüklenip çalıştırılıyor
  • Node.js için napi-rs kullanılıyor
  • Referansa kıyasla performans: saniyedeki istek sayısı 3.75 kat artıyor, ortalama gecikme 0.26 kata düşüyor

Tier 4: Rust ile yeniden yazım

  • Ana sunucunun tamamı Rust ile yeniden yazılıyor
  • Pratikte ise ana sunucunun yalnızca bir kısmını yeniden yazmak daha gerçekçi
  • Referansa kıyasla performans: saniyedeki istek sayısı 4.93 kat artıyor, ortalama gecikme 0.21 kata düşüyor, bellek kullanımı 0.01 kata düşüyor (13MB kullanım)

Sonuç

  • Tüm stratejiler iyi, ancak en etkili olan Tier 3
  • Hazır binding üretici kütüphaneler kullanılabiliyorsa Rust ile native fonksiyon yazmak kolay ve performans üzerinde büyük etkisi var

4 yorum

 
readiz 2024-11-06

O........ çeşitli işleri biraz ayak işi gibi yaparken ikisini de az çok kullanır oldum; gerçekten çok faydalı bir bilgiymiş.

 
johnnydev 2024-11-04

Son zamanlarda Rust'a bakıyorum. İlginç bir yazıymış.

 
cosine20 2024-11-04

Oldukça iyi bir yazı. Rust'ın doğru şekilde kullanıldığı örneklerden biri bu.

 
regentag 2024-11-02

Eskiden C/C++ ile çözülen alanlarda Rust'ın gerçekten popüler olduğu anlaşılıyor.