4 puan yazan GN⁺ 2024-03-20 | 1 yorum | WhatsApp'ta paylaş
  • Garnet'e giriş

    • Microsoft Research tarafından geliştirilen yeni bir uzak önbellek deposu olan Garnet, çeşitli benzersiz avantajlar sunuyor.
    • Popüler RESP wire protocol'ünü temel aldığı için, çoğu programlama dilinde kullanılabilen Redis istemcileri herhangi bir değişiklik olmadan kullanılabiliyor.
    • Çok sayıda istemci bağlantısı ve küçük toplu işler için daha iyi throughput ve ölçeklenebilirlik sunarak büyük ölçekli uygulama ve hizmetlerde maliyetlerin düşürülmesine katkı sağlıyor.
    • Hızlandırılmış TCP'nin etkin olduğu Azure bulut VM'lerini kullanarak son derece düşük istemci gecikmesi elde ediyor (%99,9'da 300 mikrosaniyenin altında).
    • En yeni .NET teknolojileri üzerine kurulan Garnet, çapraz platform, genişletilebilir ve modern bir tasarıma sahip.
    • .NET'in zengin kütüphane ekosisteminden yararlanarak API kapsamını genişletiyor ve optimizasyon için açık fırsatlar sunuyor.
  • Özellik özeti

    • Garnet; ham string, analitik ve nesne işlemleri dahil çeşitli API'ler uyguluyor.
    • İstemci tarafı RESP transaction'ları ve C# ile yazılmış sunucu tarafı stored procedure'ler aracılığıyla çok anahtarlı transaction'ları işleyebiliyor.
    • Kullanıcılar, C#'ın sunduğu kullanım kolaylığı ve güvenlikten yararlanarak ham string'ler ve yeni nesne türleri için özelleştirilmiş işlemler tanımlayabiliyor.
  • Performans önizlemesi

    • Web sitesinde, Garnet ile önde gelen açık kaynak önbellek depolarını karşılaştıran bazı temel sonuçlar sunuluyor.
  • Tasarım öne çıkanları

    • Garnet'in tasarımı, ağ üzerinden paket alınmasından veritabanı işlemlerinin ayrıştırılıp işlenmesine ve depolama etkileşimlerinin yürütülmesine kadar önbellek deposu yığınının tamamını yeniden ele alıyor.
    • Garnet'in ağ katmanı, önceki bir araştırma olan ShadowFax'ten ilham alan paylaşımlı bellek tasarımını devralıyor.
    • Garnet'in depolama tasarımı, birleşik bir işlem günlüğü tarafından belirlenen iki adet Tsavorite anahtar-değer deposundan oluşuyor.
  • Küme modu

    • Tek düğümde çalışmanın yanı sıra Garnet, sharding ve replication dağıtımları oluşturup yönetebilen bir cluster mode'u da destekliyor.
    • Cluster hâlâ geliştirme aşamasında.
  • Sonraki adımlar

    • Dokümantasyon sitesine gidebilir veya doğrudan başlangıç ya da sürüm bölümüne geçebilirsiniz.
  • Lisans

    • Bu proje MIT lisansı ile lisanslanmıştır; ayrıntılar için LICENSE dosyasına bakabilirsiniz.
  • Gizlilik

    • Gizlilikle ilgili bilgiler Microsoft'un gizlilik web sitesinde bulunabilir.
  • Katkıda bulunma

    • Bu proje katkı ve önerileri memnuniyetle karşılar; katkıların çoğu için bir CLA'nın kabul edilmesi gerekir.
    • Microsoft Açık Kaynak Davranış Kuralları benimsenmiştir; Davranış Kuralları SSS'sine bakabilir veya ek soru ya da görüşleriniz için opencode@microsoft.com adresiyle iletişime geçebilirsiniz.
  • Ticari markalar

    • Bu proje, projeler, ürünler veya hizmetlerle ilgili ticari markalar ya da logolar içerebilir; Microsoft ticari markalarının veya logolarının kullanımı Microsoft'un ticari marka ve marka yönergelerine uygun olmalıdır.

GN⁺'un görüşü

  • Garnet, mevcut Redis istemcileriyle uyumlu kalırken daha yüksek performans ve ölçeklenebilirlik sunan yeni bir önbellek deposu olarak, büyük ölçekli bulut hizmetleri işleten şirketler için cazip olabilir.
  • Bu teknolojinin gerçek ortamlarda ne kadar istikrarlı çalıştığına ve mevcut önbellek çözümleriyle karşılaştırıldığında hangi somut faydaları sunduğuna dair uzun vadeli verilere ihtiyaç var.
  • Garnet'in cluster mode'unun hâlâ geliştirme aşamasında olması, büyük ölçekli dağıtımı değerlendiren kullanıcılar için önemli bir unsur olabilir.
  • Garnet açık kaynak olarak sunulduğu için, topluluk katkılarıyla daha fazla özellik ve iyileştirme yapılması mümkün; bu da teknolojinin olgunlaşmasına katkı sağlayabilir.
  • Garnet'i benimsemeden önce mevcut sistemlerle uyumluluk, performans artışına karşı maliyet ve olası geçiş maliyetleri dikkate alınmalıdır.

1 yorum

 
GN⁺ 2024-03-20
Hacker News görüşleri
  • Benchmark performans grafiğine göre, Garnet'in GET komutu işleme hacmi Dragonfly'dan 10 kattan fazla yüksek. %50 gecikme süresi Dragonfly'dan biraz daha yüksek olsa da, %99 persentil gecikme süresi Dragonfly'dan biraz daha düşük. Garnet ve Dragonfly'ın işleme hacmi ve gecikme değerleri Redis'ten çok daha iyi; bu da Redis'in ciddi performans optimizasyonuna ihtiyaç duyduğunu gösteriyor.

    Garnet'in depolama katmanı Tsavorite, OSS FASTER'dan türetilmiştir ve thread ölçeklenebilirliği, katmanlı depolama desteği (bellek, SSD, bulut depolama), hızlı non-blocking checkpointing, kurtarma, dayanıklılık için işlem günlüğü, çok anahtarlı transaction desteği, daha iyi bellek yönetimi ve yeniden kullanım gibi güçlü veritabanı özellikleri içerir.

  • Microsoft Windows Server üzerinde WSL2'ye bağlı kalmadan Redis'i (veya uyumlu bir alternatifi) doğrudan çalıştırması gerekenler için harika bir haber. Daha önce bellek kullanımı sorunları vardı (muhtemelen çoğunlukla memory-mapped file'lar yüzünden) ve artık desteklenmeyen bir Redis port'u bulunuyordu.

    Bunun C# ile yazılmış olduğunu görmek çok ilginç; kodu incelemeye zaman ayırmakla ilgileniyorum.

  • Gerçek bir Azure dışı stack üzerinde çalıştırıldığında etkileyici performans gösteren bir Redis alternatifi. Gerçek dünyada nasıl olduğunu merak ediyorum.

  • Microsoft ve .NET ekibinin çok etkileyici altyapı projeleri geliştirdiğini görmek ilginç. Yarp reverse proxy/API gateway gibi işleri yapıyor, şimdi de bellek içi cache için Garnet var.

    Görünüşe göre içeride çok sayıda ihtiyaç var ve bunları paylaşmaya istekliler.

  • Garnet multi-threaded olduğu için MSET atomic değil. Atomic bir MSET sürümü isteniyorsa bunun transaction (stored procedure) olarak ifade edilmesi gerekiyor.

    Komutu içeride transaction ile sarıp atomic hale getirmemelerinin nedenini anlamakta zorlanıyorum. Başka hangi atomicity "tuzakları" var acaba?

  • Buradaki yorumlara bakınca artık kimse memcached kullanmıyor gibi mi görünüyor?

  • Microsoft Research zaman zaman etkileyici projeler çıkarıyor. Ar-Ge yapıp bunun için maaş almak eğlenceli olurdu. Keşke büyük şirketler sektöre fayda sağlayan bu tarz Ar-Ge projelerini daha fazla yapsa. Hashicorp satışa çıkarsa umarım iyi bir şirket satın alır.

  • Bu proje gerçekten çok iyi görünüyor. Sonunda "Azure Cache for Redis" kaynağının yerini almasını umuyorum. Şu anda yavaş, Windows'ta çalışacak şekilde yapılmış bir Redis fork'u ve bir instance oluşturmak neredeyse bir saat sürüyor.

  • Bu sistemin nerelerde iyi performans göstermediğini merak ediyorum. Daha küçük instance türlerinde yapılan benchmark'ları da görmek isterdim. 72 vCPU oldukça büyük bir instance.