Havuzdaki tüm sunuculara yazmak için memcached kuvvet

3 Cevap php

Ben belirli bir anahtar bir havuzda TÜM memcached sunuculara dağıtılır emin olmak için nasıl biraz düşündüm.

Benim şimdiki, denenmemiş çözüm memcached başka bir örneğini, böyle bir şey yapmak için:

$cluster[] = array('host' => '192.168.1.1', 'port' => '11211', 'weight' => 50);

$this->tempMemcached = new Memcached;
$this->tempMemcached->addServers($cluster);

foreach ($this->cluster() as $cluster) {    

    $this->tempMemcached->setByKey($cluster, $key, $value, $this->compress, $expireTime);

}

$this->tempMemcache->close();

Sağduyu bazı anahtarlar güvenilirlik TÜM sunucularda saklanır gerektiğinde, bu durumda yapılacak nedir?

3 Cevap

Ben Memcached bunun için dizayn edilmiştir yolu kullanarak değil düşünüyorum. FAQ bakabilirsiniz: Yalnızca kullanılan karma algoritmaya göre, belirli bir düğüm üzerinde Ürününüzü vereceğini, öğenin, bir single copy saklamak gerekir.

Eğer all düğümleri bulunan bir öğe olmasını istiyorsanız Şimdi, bunu yapmak için tek yolu şu anda yapıyoruz tam olarak yineleme gereğidir.

Bu madde önbellekte bulunamadı zaman kod davalarını umuyoruz.

Ben Memcached noktası eksik olduğunu düşünüyorum. Bu güvenilir veri depolama için değil. Bu önbelleğe alınan veriler için çok hızlı erişim için. Eğer fazlalık istiyorsanız, MongoDB gibi bir NoSQL veritabanı deneyin ...

Ayrıca, çeşitli bağlantı oluşturma (daha büyük bir şans bir terslik, bunu yapmak için gereken daha fazla bağlantı ve daha her istek için yapması gereken) performans ve yedeklilik için kötü olacak.

Basitleştirmek, karmaşık değil ...

Biz memcache sunucu arasında çok sık çarpınca bir anahtar yükü 'yaymak' olarak yaşadım. Biz sadece N yapılandırılmış var ettik örneklerinin sayısının bir katı olan bir rastgele sayı 0-N ekleyerek bunu. Eğer kaçırırsanız, kaynak (veritabanı, ne olursa olsun) gidin. Ben anahtar karşı memcache sağlamalarının beri bir çok, bilmeden bir bucketing çarpışma alabilir söylüyorlar.

Bu, daha fazla bir ön maliyet (N sizin katına orantılı) kaynağından okur, ama mutlu o kutuları tutarak, tüm örnekleri arasında tek bir tuşa yükü yaymak başarır neden olabilir.

Ama evet, bu fazlalık için yük dengeleme için değil.