7

(nedeniyle SimpleDB bütün 1 KB sınırlaması için) bir webapp, yük dengeli EC2 sunucuların bir dizi çalışan depolanması ve S3 saklanan verilerin büyük parçalar ile SimpleDB meta alınırken varsayalım. S3 oldukça yüksek gecikme olduğunu ve yine orada istekleri bir ton yapıyor olmak istemiyorum, ben bilgi için bir önbelleğe alma katmanı ... ElastiCache girmek isteyeceksiniz.EC2'deki uygulama, ElastiCache örneklerini otomatik olarak nasıl keşfedebilir?

Tamam ben hüküm Ben EC2 uygulamam içine X hardcode ve ben birkaç yüz bin yeni kullanıcı olsun ve ani benim önbellek sunucusunun tüm talebin acı underpowered kadar mutlu çalışıyor böylece son nokta X bir ElastiCache sunucusu böylece . Neyse ben sadece birkaç yeni büyük önbellek sunucularını başlayabilir ... ama sonra ben bitiş noktaları X, Y ve Z var ve benim uygulama yalnızca X denemek bilir fark, bu yüzden hala bir sorun var.

Bu yüzden şu anda sadece başım bu bulmacanın için çeşitli parçalara sarılı almak için çalışıyorum ve henüz kodlama kısmına kazanılmış değil, ama bu bir sorun olmayacak mı? Ben ElastiCache belgelerine okudum ve bunun bir önbellek küme, ama sonra kümedeki her sunucunun kendi bitiş noktası var gibi gözüküyor bahseder. EC2'de çalışan bir uygulamanın, çalışan tüm önbellek sunucularını ve belirli bir anahtarın verilerini içerdiği noktadan haberdar olmasını sağlayan bir yol var mı? Bir parçayı bir parça bilgi saklamak veya almak için bir bütün olarak sormak mümkün mü? uygulama versioncontrol (umarım öyledir) arasında görev yapmaktadır ise

+0

Ben bu sorunun cevabı büyük önemli, ama benim EC2 onun değerinde ne olursa olsun şüphe Uygulama, PHP'de yapılacaktır. –

+0

Ben https://forums.aws.amazon.com/thread.jspa?threadID=74852 de bu aynı doğrultuda bir özellik isteği fark, bu yüzden ne yazık ki o da önbellek bitiş noktaları ile bir yapılandırma dosyası olması gibi ilgili tüm sizi edilir görünüyor şimdilik yapabilirim. –

cevap

0

, sadece yapılandırma dosyasını düzenlemek istiyorum ve uygulamayı yeniden dağıtın. Bu yaklaşımda büyük bir sorun görmüyorum, ama belki de bariz olanı özlüyorum.

Bana bildirin.

+2

Ben bir tek sunucu sanki uygulamaya önbellek küme sunmak için bir elasticache mekanizma olduğunu umuyordum. kadar iplik veya bir önbellek düğümü kapatılıyor, vb Böyle bir şey henüz yok gibi görünüyor değilken önbellek yapılandırma hakkında endişe, belirli bir anahtar için vurmak hangi uç nokta dert değil. –

+0

Yapmıyor. Genel olarak, AWS 'ElastiCache size düğümler sunar. Bu düğümler nasıl kullanılır (örneğin, hepsini dev bir mağaza olarak kullanıyor musunuz, yoksa ayna mı, vb.) Size kalmış. Bu sadece memcache nasıl çalışır. Bulmanızı muhtemelen periyodik bir API çağrısı haline getirebilirsiniz, ancak bunu tavsiye etmem. Bu değişiklikler için yeniden dağıtıyoruz. – Till

+0

Bu konuda genişlemiş büyü yapmazdım. Örneğin. Sadece bir düğüm eklemek genellikle iyi bir fikir değildir veya uygulamanızın büyük olasılıkla uğraşabileceği bir şey değildir. Örneğin.ElasticCache kümemize başka bir düğüm eklediğimde, önbellek kümesini yeniden konuşlandırmam gerekiyor. Genellikle, konfigürasyona eklemek daha kolaydır, ext/memcache ayarlarını (PHP'yi kullanırız) ayarlar ve önbelleği boşaltarak ve yeniden doldurarak sıfırdan başlar. – Till

0

Amazon'un Elasticache Otomatik Bul kesinlikle korkunç olduğunu. Temelde kurulumu imkansızdır, bu da çılgınlıktır çünkü çok basit olmalıdır.

Ben çalıştırmakta olan düğümlerin sayısını verilmiş bir elasticache düğüm URL oluşturmak için PHP basit bir fonksiyon yazdım. Evet, düğüm sayısını değiştirirseniz kodunuzu güncellemeniz gerekir (veya belki de bu değeri bir env değişkenine koymanız gerekir).

Aynı düğümlere Aynı anahtarları eşler:

function get_elasticache_node_url($key, $config_url, $num_nodes) { 
    $node = hexdec(substr(md5($key), 0, 15)) % $num_nodes + 1; 
    $nodestr = str_pad($node, 4, "0", STR_PAD_LEFT); 
    return str_replace('.cfg.','.'.$nodestr.'.',$config_url); 
} 

$num_nodes = 10; 
$config_url = 'cluster-name.xyzxyz.cfg.use1.cache.amazonaws.com'; 

echo get_elasticache_node_url("key1", $config_url, $num_nodes); 
echo get_elasticache_node_url("key2", $config_url, $num_nodes); 

Çıktı:

cluster-name.xyzxyz.0001.use1.cache.amazonaws.com 
cluster-name.xyzxyz.0004.use1.cache.amazonaws.com 
İlgili konular