Cloudflare’ın nginx’i bırakıp Rust ile HTTP proxy’si (Pingora) geliştirip kullanması
(blog.cloudflare.com)nginx’in sınırları vardı
- Her istek için yalnızca tek bir worker kullanıldığı için CPU çekirdeği kullanımında dengesizlik oluşuyordu
- Worker başına bir connection pool bulunduğu için TCP ve TLS bağlantılarının yeniden kullanım oranı düşüktü -> TTFB yükseliyordu
- Ayrıca nginx’i işletmek için gereken işlevleri de kendileri geliştiriyordu; ancak C ile tasarlanan nginx memory-safe değildi, bu yüzden deneyimli mühendisler bile hata yapabiliyordu
Pingora
- Cloudflare, RFC standardına uymayan çok sayıda istek de alıyor; üçüncü taraf kütüphaneler (
hypergibi) RFC’ye sıkı bağlı şekilde uygulandığından, genişletmek için ek mühendislik çabası gerektiği için kendi sistemlerini kurdular - Rust, performans kaybı olmadan C’nin yapabildiği işleri memory-safe bir şekilde ikame edebildiği için seçildi
- Connection pool’u kolayca paylaşmak için work-stealing tarzı bir scheduling sistemi benimsendi ve yeniden kullanım oranı arttı. Önceye kıyasla saniyede yalnızca 1/3 seviyesinde bağlantı kuruluyor
- Önceye kıyasla CPU %70, bellek ise %67 daha az kullanılıyor
- İleride açık kaynak olarak yayımlanması planlanıyor
5 yorum
CPU'nun %70, belleğin %67 oranında boşta kalması gerçekten şaşırtıcı..
Vay be, nginx’i de gerçekten çok iyi kullandık; bu açık kaynak olarak çıkarsa hemen denemek isterim.
Rust öğrenseniz de iş bulacak pek yer yok gibi.
Rust olması hoşuma gitti doğrusu.
Sistem programlamasında en azından Rust giderek daha rakipsiz hale geliyor gibi görünüyor..