21 puan yazan xguru 2024-04-10 | 1 yorum | WhatsApp'ta paylaş

Geliştirilme motivasyonu

  • Go önbellek kütüphaneleri arasında gerçekten contention-free olan yok. Çoğu, sadece mutex ve çıkarma politikası eklenmiş bir map'ten ibaret
  • Bu da diğer dillerdeki önbelleklerin (ör. Caffeine) hızına ulaşamıyor
  • Dgraph Labs'ın en hızlı önbelleği olan Ristretto, rakiplerinden %30'a kadar daha hızlıydı (Otter ise çok daha hızlı), ancak hit ratio'su iyi değildi
  • Gerçek uygulamalarda önbellek kütüphanesinin performans sınırına takılmak istemediğiniz için bu sorun yaratabilir
  • Sonuç olarak, en hızlı ve kullanımı en kolay önbelleği yapmak istediler

Başlıca özellikler

  • Basit API: Builder'da istediğiniz parametreleri ayarlayıp kullanmanız yeterli
  • Otomatik yapılandırma: Uygulamanın paralel işleme kapasitesine göre otomatik olarak yapılandırılır
  • Generics: Anahtar olarak karşılaştırılabilir her tür güvenle kullanılabilir, değer olarak ise her tür kullanılabilir
  • TTL: Süresi dolan değerler önbellekten otomatik olarak silinir
  • Maliyet tabanlı çıkarma: Her öğenin maliyetine göre çıkarma işlemini destekler
  • Üstün throughput: Mevcut rakiplerini açık ara geride bırakan en hızlı önbellek kütüphanesi (Theine, Ristretto, Bigcache, Fastcache)
  • Harika hit ratio: Güçlü sonuçlar veren yeni S3-FIFO algoritması kullanılıyor

1 yorum

 
xguru 2024-04-10

İsim bir şekilde tanıdık geldi, ben de aratınca şöyle bir şey olduğunu gördüm
Otter: Bağlam içinde komut ayarı yapılabilen multimodal model
Artık hayvan isimleriyle bir şeyler üretmemek gerekiyor galiba. Çok nadir bir şey olmadığı sürece çoğu zaten var.

Yapay zeka analiz görüşü de fena değildi, ben de ekleyeyim dedim.

GN⁺ görüşü

  • Bu açık kaynak cache kütüphanesi, Go geliştiricileri için oldukça faydalı görünüyor. Özellikle yüksek performans gereken servislerde, mevcut cache kütüphanelerinin performans sınırlarını aşmak için bir alternatif olabilir
  • Makaleye dayalı bir algoritma uygulayarak mevcut kütüphanelere kıyasla rekabetçi performans elde etmiş olması etkileyici. Gerçek serviste kullanmadan önce performansı çeşitli benchmark'larla doğrulamak gerekebilir
  • Basit bir API ile kolay kullanılabilmesi ve güncel Go sürümlerindeki generics desteği gibi özellikler sayesinde geliştirici deneyimi de iyi görünüyor
  • Benzer Go cache kütüphaneleri olarak groupcache, fastcache, ristretto, freecache sayılabilir. Performans özellikleri ve kullanım kolaylığını iyi karşılaştırmak gerekir gibi duruyor
  • Kişisel/küçük ölçekli servislerden ziyade yüksek trafikli servislerde daha faydalı olabilir. Cache boyutunun ne kadar olacağı, eviction periyodunun nasıl ayarlanacağı gibi konular iyi düşünülmeli. Ayrıca cache'e aşırı bağımlı olunursa tutarlılık sorunları ortaya çıkabileceği için dikkatli olmak gerekir