AWS ElastiCache / SimpleQueue vs DynamoDB


13

Ben sadece DynamoDB içinde sırasıyla "Önbellek" ve "Kuyruk" tabloları vs vs ElastiCache / SimpleQueue kullanmak için mantık merak ediyorum.

Önbellek / Kuyruk hizmetlerine yönelik ağ gecikmesi, birçok performans kazanımını gölgede bırakacak ve EC2'nin Dynamo'ya önbellek / kuyruk hizmeti olarak davranması aynı gecikmeyi ve verimi sunacağı gibi görünüyor (çünkü Dynamo herhangi bir koşulda sabit bir düşük gecikmeye izin veriyor yük).

Ağırlıklı olarak dinamo vs yük altındaki diğer hizmetlerin fiyatı hakkında mı?

Dynamo'yu ElastiCache / SQS ile karşılaştıran kaba gecikme sayıları olan var mı?

Eklediğim ek karmaşıklığı haklı kılan daha önemli hususlar var mı?

Teşekkürler.

Yanıtlar:


9

DynamoDB ve ElastiCache Redis'i farklı nedenlerle kullanıyoruz.

DynamoDB:

  • Daha karmaşık şeyler (aralarından daha büyük, vb.) Yapabilen bir sorgu dili vardır
  • İnternete yönelik harici bir API aracılığıyla erişilebilir (farklı bölgelere herhangi bir değişiklik veya kendi altyapısı olmadan erişilebilir)
  • Tablolara ve hatta satırlara dayalı izinler mümkündür
  • Veri boyutu ile sonsuz arasındaki ölçekler
  • Talep başına ödeme yaparsınız -> düşük talep numaraları daha küçük fatura, yüksek talep numaraları daha yüksek fatura anlamına gelir
  • Okumalar ve Yazmaların maliyetleri farklıdır
  • Veriler birden fazla tesiste AWS tarafından yedekli olarak kaydedilir
  • DynamoDB kutudan çıkar çıkmaz kullanıma hazır
  • Otomatik ölçeklendirme hizmetin kendisinde mevcuttur

ElastiCache Redis:

  • Basit sorgu dili - karmaşık özellikler yok
  • (Kutudan çıktığı gibi) diğer bölgelerden ulaşılamıyor mu?
  • Her zaman bellek miktarı (veya bir kümedeki tüm birincil örneklerin toplamı) ile sınırlısınız
  • Birden çok örnek üzerinde parçalama yalnızca uygulamanızda mümkündür - Redis burada hiçbir şey yapmaz (Redis kümesi burada yardımcı olur, ancak parçalama mantığı hala uygulamanızda kullandığınız sürücü / sdk'nin içindedir) - ölçeklendirme ve ölçekleme - şu anda kesinti olmadan çıkış mümkün değildir
  • Yükleme veya istek sayısı ne olursa olsun örnek başına ödeme yaparsınız.
  • Verilerin yedekliliğini istiyorsanız, çoğaltmayı ayarlamanız gerekir (farklı bölgeler arasında mümkün değildir)
  • Yüksek kullanılabilirlik için kopyaları kullanmanız gerekir
  • Otomatik ölçeklendirme yok (yukarıdaki ölçeklendirme yok kısmına bakın)

Bu yüzden kurulumumuz çoğu zaman: DynamoDB tarafından kalıcı ve uzun ömürlü depolama olarak desteklenen Redis'te yüksek miktarda istek içeren basit önbellekler. Bununla birlikte, Redis'in örnek başına ödeme modeliyle okumalarımız için örtük bir indirim elde ettiğimiz için maliyetleri sınırlıyoruz, ancak DynamoDB'nin yedekli olmasının avantajını elde ediyoruz ve hatta DynamoDB sorgu dilini daha karmaşık şeyler için kullanabiliyoruz ( İhtiyacımız olursa).

Umarım yardımcı olur!

Güncelleme: Amazon DynamoDB Hızlandırıcısının duyurulmasıyla ( https://aws.amazon.com/de/dynamodb/dax/ ) DAX'i tam olarak yaptığımız gibi kullanmaya başlıyoruz (sonunda) DynamoDB ve Redis'in kombinasyonu. DAX, AWS tarafından tamamen yönetildiğinden ve uygulamalarımızda her zaman DynamoDB dilini kullanma şansı verdiğinden, Redis gibi bir yazma önbelleğinden de faydalanma şansı verir.


Çok faydalı, teşekkürler. Ne anlamadım dinamodb ile yedekleme redis nasıl olduğunu: Bu AWS bir özelliği var mı? veya yedeklemeyi ne zaman ve nasıl oluşturuyorsunuz? Bunu açıklığa kavuşturabilirsen teşekkür ederim!
badera

Benim "desteklediğim" geleneksel yolla bir yedekleme demek değildir. Aslında her zaman DynamoDB'ye yazıyoruz ve önce okumak için Redis'i kullanıyoruz. Redis verileri kaybetse bile DynamoDB'de mevcut olanı elde ederiz. DAX ( aws.amazon.com/de/dynamodb/dax ) kullanımı ile bu kullanım durumu artık çok daha kolay!
Osterjour

7

DynamoDB yerine Elazache kullanmamızın ana nedeni hızdır - küçük nesneler için 1 ms'den daha kısa bir yolculuk gecikmesi elde edersiniz. Kutu gerçekten EC2 makinenize yakın ve bellek SSD bile diskten çok daha hızlı.

Farklı fiyatlandırma modelleri göz önüne alındığında bir maliyet avantajı da olabilir, ancak orada bu kadar ayrıntılı bir ayrıntıya girmedim.


Hala alakalı mı? DAX bunu değiştirmedi mi?
dmigo

1
DAX, gecikme sorunlarının çoğunu çözecek, evet. Tam hız farklılıklarından emin değilim - küçük nesneler için ağ gecikmeye büyük katkıda bulunacaktır.
Maximilian

1

Yeniden yazma / memcached bellek içi depolardır ve önbellek / kuyruk tipi veriler için genellikle DynamoDB'den daha hızlı olmalıdır. Ayrıca, Dynamo'nun sahip olamayacağı anahtarların süresi, Redis'te Pub / Sub vb. Gibi kullanışlı ek öğeler de vardır.


1
Teşekkürler. Önbelleğin bellekte olduğunun farkındayım, ancak en az bir ~ 10ms gidiş dönüşün önbelleğe çarpıp geri gelmesini bekleyebileceğini okudum, bu da performans özelliklerini Dinamo ile aynı yapıyor. Sanırım memcached belirli özellikleri dinamo boşuna değil istiyorum haklısın. Ama benim için, bir RAM önbelleğinin ana avantajı, burada geçerli görünmeyen dayanıklı bir mağazaya göre büyüklük performansı artışlarıdır.
Scott Klarenbach
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.