Memcache başarısızlık ve tutarlı karma

1 Cevap php

PHP ile inşa edilmiştir benim şimdiki web uygulamasında memcached sunucuları çevrimdışı / aşağı işlemek için iyi bir şekilde çalışmak için çalışıyorum.

Ben sadece ne istediğinizi yapmak için nasıl bir yaklaşım gösteren bu linki buldum, ben düşünüyorum: http://web.archive.org/web/20090421075021/http://cmunezero.com/2008/08/11/consistent-memcache-hashing-and-failover-with-php/

Onunla çalışan ve memcache ile yük devretme konusunda PHP Dokümantasyonunu okumaya başladığınızda neyse, bu beni karıştı alır. Neden çevrimdışı memcache sunucuları birlikte çevrimiçi sunucuları ile $realInstance sunucu havuzuna eklenir?

Reading the memcache documentation confuses me even more: http://www.php.net/manual/en/memcache.addserver.php

status

Controls if the server should be flagged as online. Setting this parameter to FALSE and retry_interval to -1 allows a failed server to be kept in the pool so as not to affect the key distribution algorithm. Requests for this server will then failover or fail immediately depending on the memcache.allow_failover setting. Default to TRUE, meaning the server should be considered online.

Teşekkürler,

1 Cevap

Temelde, yol memcache depolama işleri dağıtılan, onun tüm sunucuları hakkında söylemek olmasıdır. Eğer bir anahtar (ya da depolanan getirilen edilecek ya) için sorduğunuzda sonra, o anahtarın bir karma oluşturur. Bu karma sonra (bu tüm istemci yapılır) gitmeli havuzunda hangi sunucu belirlemek için bir algoritma geçer. Eğer havuzdan çevrimdışı sunucuları kaldırırsanız, bu karma hesaplama farklı olacak ve tüm mağaza tehlikeye olabilir (veri hala orada olacak, ama bunu erişmek mümkün olmayabilir).

Durum bayrağı Bir sunucu büyükçe bir uygulama (sadece olmadı birini) başarısız yapabilmenizi sağlar. Peki, ne yapabilirim tüm sunucuları ve durumunu listeleyen bir uygulama için bir yapılandırma dosyası olması. Bir kaç dakika (ya da birkaç saat) boyunca sunucular çevrimdışı birini almak gerekiyorsa, daha sonra, false bu sunucunun durumu bayrağı ayarlayabilirsiniz. Bu şekilde, php bunun için bakmak (ve bir zaman aşımı vurmak) denemez, ama karma eşleme aynı kalacak (Yani her şeyin hala erişilebilir olacaktır).

Mantıklı?