Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 3522|Yanıt: 2

[Kaynak] .NET ile geliştirilen Garnet önbellek ve Redis'in basit bir karşılaştırması

[Bağlantıyı kopyala]
2024-3-28 18:00:42 tarihinde yayınlandı | | | |
Garnet, Microsoft Research tarafından geliştirilen ve birkaç benzersiz fayda sunan yeni bir uzak önbellek depolama türüdür:

  • Garnet, popüler RESP hat protokolünü başlangıç noktası olarak alır; bu da günümüzde çoğu programlama dilinde mevcut olan değiştirilmemiş Redis istemcilerinden Garnet'i kullanmayı mümkün kılar; örneğin C# dilindeki StackExchange.Redis gibi.
  • Garnet, benzer açık kaynak önbellek depolama ile karşılaştırıldığında birçok istemci bağlantısı ve küçük partilerle daha iyi aktarım ve ölçeklenebilirlik sunar; böylece büyük uygulamalar ve hizmetler için maliyetleri azaltır.
  • Garnet, hızlandırılmış TCP etkinleştirilmiş Commodity Cloud (Azure) VM'lerini kullanarak (genellikle %99,9'da 300 mikrosaniyeden az) son derece düşük istemci gecikmesi gösterdi ki, bu da gerçek dünya senaryoları için kritiktir.
  • Garnet, en son .NET teknolojisine dayanır ve platformlar çapraz, genişletilebilir ve moderndir. Yaygın durumlarda performanstan ödün vermeden kolayca geliştirilebilecek ve gelişecek şekilde tasarlanmıştır. .NET'in zengin kütüphane ekosisteminden API'yi genişletmek ve açık optimizasyon fırsatları sağlamak için kullanıyoruz. .NET kullanımımız sayesinde Garnet, hem Linux hem de Windows'ta son teknoloji performansa ulaşıyor.


Açık Kaynak Adresi:Bağlantı girişi görünür.
Belge:Bağlantı girişi görünür.

Garnet'in aşağıdaki temel faydaları vardır:

  • Sunucu veri taşımacılığı (saniye başına operasyonlar), küçük partiler ve birçok istemci oturumu için karşılaştırılabilir açık kaynak önbellek depolama ile karşılaştırıldığında birkaç kat artmıştır.
  • Windows ve Linux'ta hızlandırılmış TCP etkinleştirilmiş olan commodity cloud (Azure) makinelerinde, işlem başına gecikme son derece düşüktür (genellikle %99,9'da 300 mikrosaniyeden az).
  • Müşteri sayısı arttıkça, istemci toplu olarak veya toplu olarak daha iyi ölçeklenebilirlik sağlanır.
  • Bir sunucu bilgisayarının tüm CPU/bellek kaynaklarını tek bir paylaşılan bellek sunucusu örneği üzerinden kullanabilme yeteneği (düğüm içi kümeleme gerektirmez).
  • Bellekten büyük veri setleri için destek, bu veri setleri yerel ve bulut depolama cihazlarına taşır.
  • Hızlı kontrol noktası, kurtarma ve yayınlama/abone olma gibi veritabanı özellikleri var.
  • Çok düğümlü parçalanmış hash bölümleme (Redis "küme" modu), durum göçü ve çoğaltma desteği.
  • Kapsamlı bir test paketiyle iyi test edildi (Garnet ve depolama seviyesi Tsavorite ile binlerce birim testi).
  • Kolayca geliştirilip genişletilebilen C# kod tabanı.


Garnet, özellikle aşağıdaki görüntü komutlarını desteklediği tüm Redis komutlarını desteklemez:Bağlantı girişi görünür.
Garnet projesi, farklı istemciler, farklı iş yükleri ve farklı politikalar kullanarak RESP benchmarkları çalıştırmak için bir Benchmark aracı içerir; bu da veri verimliliği, performansı ve gecikmeyi ölçmektir. Adres:Bağlantı girişi görünür.
RESP Protokolü:Bağlantı girişi görünür.

Bu makale, basit testler için Redis'in yerleşik kıyaslama araçlarını kullanır ve test ortamı aşağıdaki gibidir:

Redis Benchmark performans testi
https://www.itsvse.com/thread-9645-1-1.html

önbellekSürüm
RedisRedis 3.0.504 (00000000/0) 64 bit
GrenaGarnet 1.0.2 64 bit; bağımsız mod


Redis kıyaslamaları

İlk olarak, Redis önbelleğini komut satırıyla aşağıdaki komutla başlatın:


Test komutu şöyledir:


Sonuçlar şu şekildedir:



====== SET ======
  24,38 saniyede tamamlanan 500000 istek
  100 paralel istemci
  3 bayt yük
  Hayatta Kalın: 1

%0,03 <= 1 milisaniye
%0,25 <= 2 milisaniye
%2,65 <= 3 milisaniye
%16,49 <= 4 milisaniye
%59,95 <= 5 milisaniye
%99,09 <= 6 milisaniye
%99,76 <= 7 milisaniye
%99,86 <= 8 milisaniye
%99,93 <= 9 milisaniye
%99,98 <= 10 milisaniye
%99,99 <= 11 milisaniye
%100.00 <= 12 milisaniye
20512.82 istek saniyede

====== BUL ======
  500000 istek 27,41 saniyede tamamlandı
  100 paralel istemci
  3 bayt yük
  Hayatta Kalın: 1

%0,03 <= 1 milisaniye
%0,19 <= 2 milisaniye
%6,44 <= 3 milisaniye
%25,82 <= 4 milisaniye
%45,65 <= 5 milisaniye
%98,79 <= 6 milisaniye
%99,98 <= 7 milisaniye
%99,98 <= 8 milisaniye
%99,98 <= 9 milisaniye
%100,00 <= 9 milisaniye
18238.86 istek saniyede

Garnet kıyaslamaları

Yeni bir .NET 8 konsol projesi oluşturun ve önce Microsoft.Garnet paketine aşağıdaki komutla başvurun:


Kod şöyledir:


Başlatma komutu şöyledir:


Aynı kıyaslama komutu kullanılarak sonuç şu şekildedir:



====== SET ======
  11,51 saniyede tamamlanan 500000 istek
  100 paralel istemci
  3 bayt yük
  Hayatta Kalın: 1

%75,51 <= 1 milisaniye
%88,24 <= 2 milisaniye
%92,04 <= 3 milisaniye
%99,46 <= 4 milisaniye
%99,98 <= 5 milisaniye
%99,99 <= 6 milisaniye
%100.00 <= 12 milisaniye
%100.00 <= 12 milisaniye
43448.04 istek saniyede

====== BUL ======
  31,50 saniyede tamamlanan 500000 istek
  100 paralel istemci
  3 bayt yük
  Hayatta Kalın: 1

%0,01 <= 1 milisaniye
%0,90 <= 2 milisaniye
%27,25 <= 3 milisaniye
%97,65 <= 4 milisaniye
%99,82 <= 5 milisaniye
%99,94 <= 6 milisaniye
%99,98 <= 7 milisaniye
%99,98 <= 9 milisaniye
%99,98 <= 10 milisaniye
%99,99 <= 11 milisaniye
%100.00 <= 12 milisaniye
%100.00 <= 12 milisaniye
15872.01 istek saniyede

Test araçları, yazılım sürümleri, test parametreleri vb. farklı sonuçlara yol açtığı için testler sadece referans içindir; bu makaledeki basit testler sayesinde Garnet'in Redis'e göre çok daha düşük gecikmeye sahip olduğu görülebilir.

(Son)




Önceki:.NET/C# yansıma özniteliği, null tiplerle değerlendirilebilir
Önümüzdeki:SSE (1), SSE sunucusu olarak ASP.NET Core'u kullanır
 Ev sahibi| 2024-3-28 18:01:32 tarihinde yayınlandı |
KeyDB, Snap tarafından desteklenen tamamen açık kaynaklı bir veritabanıdır ve Redis'e daha hızlı bir alternatiftir. Adres:https://docs.keydb.dev/
 Ev sahibi| 2025-9-3 09:36:07 tarihinde yayınlandı |
DAHA HIZLI: Hızlı eşzamanlı sürekli anahtar-değer depolama ve C# ile C++ dilinde kayıt yapma.
        
Belge:Bağlantı girişi görünür.
Kaynak:Bağlantı girişi görünür.
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com