Geliştirici 240 milyon alan adı için anlık otomatik tamamlama sistemi geliştirdi
Öne çıkanlar
- Sistem, tuşa basma ile bırakma arasındaki 121 milisaniyelik sürede sonraki karakter olasılıklarını önceden çekiyor.
- 240 milyon alan adı delta sıkıştırması ve bellek eşleme yöntemiyle diskte 2,5 GB alana sığdırıldı.
- API, saniyede 1600 istek yükü altında 15 milisaniyelik p99 yanıt süresine ulaştı.
İnternet altyapı analiz sitesi Wirewiki'nin geliştiricisi Ruurtjan, 240 milyon alan adını kapsayan ve kullanıcı tuşu bıraktığı anda sonuçları ekrana getiren yüksek performanslı bir otomatik tamamlama sistemi kurdu. Sistem, kullanıcının klavyede tuşa basması (keyDown) ile bırakması (keyUp) arasındaki ortalama 121 milisaniyelik süreyi bir zaman bütçesi olarak kullanıyor. İstemci tarafında tuşa basıldığı anda gelebilecek sonraki karakterler için önceden veri çekiliyor ve tuş bırakıldığında öneriler gecikmesiz işleniyor.
Veri mimarisinde popüler ve seyrek aranan alan adları iki ayrı katmana ayrıldı. En popüler 1 milyon alan adını içeren Tranco listesi, doğrudan bellekte çalışan bir karakter ağacı (trie) yapısında tutularak her önek için ilk 8 öneriyi hazır bekletiyor. Kalan 240 milyon alan adı ise CZDS kaynaklarından alınarak delta sıkıştırmasıyla sabit boyutlu bloklara bölündü ve SSD tabanlı bir hafıza eşlemeli (mmap) blok dizininde saklandı. Bu yapılandırma sayesinde 240 milyonluk liste diskte yalnızca 2,5 GB yer kaplıyor.
Üretim sunucusunda yapılan yük testlerinde, API doğrudan gelen isteklerin büyük çoğunluğunu 2 milisaniyenin altında yanıtladı. Saniyede 1600 istek altındayken bile Nginx ve API uçtan uca yanıt süresi p99 ölçeğinde 15 milisaniyede kaldı. Geliştirici, tek bir Avrupa sunucusu kullanıldığı için kıtalararası ağ gecikmelerinin bütçeyi aşabildiğini ancak coğrafi yük dengeleme ile küresel düzeyde de benzer hızların yakalanabileceğini belirtti.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.