2013-07-31 12 views
5

kullanırken kurtarma memcached düğümleri nasıl ele alınır 5 düğümlü bir havuz havuzuna bağlanmak için spredmced & HashAlgorithm.KETAMA_HASH kullanıyorum.Spymemcached & HashAlgorithm.KETAMA_HASH

Benim anlayış biz böyle tutarlı bir karma algoritması kullandığınızda bir düğüm aşağı olduğunda, biz anahtar yeniden dağıtılacak şekilde

Ya (dk. Etkisiyle) endişelenmenize gerek yok olduğunu down-ed düğümü havuza katılacak. Ne yapmam gerekiyor?

Eski veriler kaldırıldığından emin olmalı mıyım? Ya da programımın bu dava için özel işlemeye ihtiyacı var mı?

cevap

4

bu belge doğru olduğunu düşünürsek: http://info.couchbase.com/rs/northscale/images/Couchbase_WP_Dealing_with_Memcached_Challenges.pdf

orada herhangi bir ağ aksama olduğunu ve bir veya daha fazla müşteri belirli bir memcached sunucu artık mevcut olmadığını karar verirse, bunlar otomatik bazı verileri rehash Orijinal olanı hala mevcut olsa bile düğümlerin geri kalanı. Düğüm sonunda hizmete dönerse (örneğin ağ kesintisi çözüldükten sonra), bu düğümdeki veriler güncel olmayacak ve güncellenmiş anahtar sunucusu yeniden eşleme bilgisi olmayan istemciler eski verileri okuyacaktır.

bu tarihe kadar hala varsayarsak: http://lists.danga.com/pipermail/memcached/2007-April/003852.html Geri eklemeden önce düğümü temizlemek/güvenli yenileme olurdu. Herhangi bir eski girişi temizlemek için down-ed düğümünü zorlamak.

+0

Anladığım kadarıyla tüm eski verileri tüm düğümlerde temizlemem gerekiyor. Niye ya? Bazı istemciler down-ed düğümünü görebiliyor olabilir, ancak bazı istemciler hala düğümün kapalı olduğunu varsayabilir. Bu nedenle, istemcilerin anahtarı farklı düğümlere ayırabileceği için, veri tutarsızlığı oluşabilir. Ancak bu problem, memmun düğümlerin tümünü kilitlemenin ve fışkırtma işlemini gerçekleştirmenin bir yolu olmadığı sürece - yarış koşullarından kaçınmak için zor. – Howard

+0

Benim düşünceme göre, sadece down-ed düğümünü yıkamak için hala güvenli olduğunu düşünüyorum. Temiz, eğer düğümde herhangi bir talep varsa, yeni ve yeni bilgiler ekleyerek bir bayanla sonuçlanacaktır. Eğer müşteri düşündüğünüzü düşünürse, bir başka sonuca da yol açacaktır. Bu olursa, her iki düğüm de örneğin 'foo' anahtarına sahiptir. Down-ed düğümü bu müşteriye çevrimiçi olarak geri döndüğünde, tekrar temizlemeniz gerekir. İşte bu konuda daha fazlası var: http://www.caiapps.com/duplicate-key-problem-in-memcache-php/ –

+1

evet ama ne dediniz sadece tek bir istemci ancak birden fazla sunucu olduğunda geçerlidir. Farklı istemcileri belirli bir zamanda aynı kümedeki memcached sunucularını kullanacak şekilde koordine etmenin bir yolu yoktur (tutarlı karma kullanımı kullanarak varsayalım). – Howard