2012-08-28 17 views
21

Dinamo benzeri veritabanları (örn. Cassandra), yeterliliği, yani eşzamanlı olarak yazılan bir çoğaltma (W) ve bir kaç kopya (R) W + R> gibi bir şekilde seçilmelidir. N burada bir çoğaltma faktörüdür. Öte yandan, Zookeeper gibi PAXOS tabanlı sistemler de tutarlı bir hataya dayanıklı depolama olarak kullanılmaktadır.Cassandra'da Paxos ve W + R> = N arasındaki fark nedir?

Bu iki yaklaşım arasındaki fark nedir? PAXOS, W + R> N şeması tarafından sağlanmayan garantiler sağlıyor mu?

+7

FWIW, Zookeeper Paxos tabanlı değil, master aşağı indiğinde ayrı bir özel lider seçim protokolüyle iki aşamalı bir taahhüt protokolü (iptal edilmiyor). Kabul edildiğinde, Dikey Paxos'un bir uygulaması olarak düşünebilirsiniz, ancak sonuçta, tüm doğru uzlaşma algoritmaları Paxos üzerine haritalanabilir. –

cevap

7

Paxos, uygulamak için pek de önem taşımadığı kadar, ya da sadece lider seçim ya da başka bir şey için kullandığımız birçok sistemin uygulanması için pahalıdır. Bununla birlikte, başarısızlıkların varlığında garantili tutarlılık sağlar - tabi ki, belirli bir başarısızlık modelinin sınırlarına tabi.

İlk çekirdek temelli sistemler, çekirdek mekanizmasının çalıştığı konusunda güvenebileceğiniz yeterli tutarlılık sağlayacak bir çeşit lider veya işlem altyapısı varsaydığını gördüm. Bu altyapı Paxos tabanlı olabilir.

böyle https://cloudant.com/blog/dynamo-and-couchdb-clusters/ olarak açıklamaları bakıldığında Dinamo olduğunu görünür değil onun çekirdek sistem için tutarlılığını garanti eden bir altyapıya dayalı - bu yüzden çok zeki olmak ya köşeleri kesiyor? http://muratbuffalo.blogspot.co.uk/2010/11/dynamo-amazons-highly-available-key.html'a göre, "Dynamo sistemi, kullanılabilirliği fedakarlık derecesine kadar vurguluyor. Özet" Dinamo, bazı başarısızlık senaryoları altında tutarlılığı feda ediyor. "Dynamo'nun, başarısızlıkların yokluğunda bile tutarlılığı feda ettiği anlaşılıyor. Çoğul koordinatörler nedeniyle kopyaların birbirinden ayrılmasından dolayı çoklu eşzamanlı yazma isteklerinin varlığında tutarsızlık. " (son alıntı)

Dynamo'da uygulanan nisap durumunda, Paxos'un daha güçlü güvenilirlik garantileri sağladığı görülecektir.

11

Paxos ve W + R> N quorum biraz farklı sorunları çözmeye çalışır. Paxos genellikle bir durum makinesini çoğaltmanın bir yolu olarak tanımlanır, ancak aslında daha çok dağıtılmış bir günlüğe sahiptir: günlüğüne yazılan her öğe bir dizin alır ve farklı sunucular sonunda aynı günlük öğelerini + dizinlerini tutar. (Çoğaltılmış durum makinesi, girişleri durum makinesine kaydetmek için yazılabilir ve her sunucu, durum makinesine, kararlaştırılan girişler üzerinde indekslerine göre tekrarlar). Bir blog yazısında Paxos hakkında daha fazla bilgi edinebilirim. here yazdım.

W + R> N quorum, birden çok sunucu arasında tek bir değer paylaşma sorununu çözer. Akademide "paylaşılan kayıt" denir. Paylaşılan bir kaydın iki işlemi vardır: okuma ve yazma, okunan yazımın önceki yazının değerini döndürmesini bekleriz. Böylece, Paxos ve W + R> N quorum, farklı alanlarda yaşıyor ve farklı özelliklere sahip (örn., Paxos, sıralı bir öğelerin listesini kaydeder). Bununla birlikte, Paxos paylaşılan bir kaydı uygulamak için kullanılabilir ve dağıtılmış bir kütüğü (çok etkisiz olsa da) uygulamak için bir W + R> N çekirdek kullanılabilir.

Yukarıdakilerin tümünü söylerken, bazen W + R> N çekirdeklerinin birden fazla iletişim turu gerektireceğinden "tam olarak sağlam" şekilde uygulanmaz. Bu nedenle, düşük gecikme süresi isteyen sistemlerde, W + R> N çekirdeklerinin uygulanmasının daha zayıf özellikler sağlaması mümkündür (örneğin, çelişen değerler mevcut olabilir). Özetlemek gerekirse, teorik olarak, Paxos ve W + R> N aynı hedeflere ulaşabilir. Pratik olarak, çok verimsiz olur ve her biri biraz farklı bir şey için daha iyidir. Daha pratik olarak, W + R> N her zaman tam olarak uygulanmaz, bu nedenle hız için bazı tutarlılık özelliklerini kazıyarak.

Güncelleme: Paxos çok genel başarısızlık modelini destekler: mesajlar bırakılabilir, düğümler çökmesine ve yeniden başlatma yapabilirsiniz. W + R> N çekirdek programında, çoğu daha az genel başarısızlık olduğu düşünülen çeşitli uygulamalar vardır. Dolayısıyla, ikisi arasındaki fark, desteklenen olası hataların varsayımına da bağlıdır.

14

Evet, Paxos, Dinamo benzeri sistemler ve okuma-yazma yetekleri tarafından sağlanmayan garantiler sağlar. Fark, başarısızlıkların nasıl ele alındığı ve bir yazım sırasında ne olduğu. Başarılı bir yazının ardından, her iki sistem de benzer şekilde davranır. Veriler, daha sonra okumak için (kaydedilinceye veya silinene kadar) kaydedilir ve kullanılabilir.

Fark, yazma sırasında ve arızanın arızasında görüntülenir. W düğümlerinden, nihayetinde tutarlı sistemlere bir şeyler yazarken başarılı bir cevap alana kadar, bu veriler, bazı düğümlere yazılabilir ve başkalarına yazılmamış olabilir ve tüm sistemin mevcut değer üzerinde hemfikir olduğu konusunda bir garanti yoktur. Bu noktada verileri tekrar okumaya çalışırsanız, bazı istemciler yeni verileri geri alabilir ve bazı eski verileri geri alabilir. Başka bir deyişle, sistem hemen tutarlı değildir. Bunun nedeni, bu sistemlerde düğümler arasında atomik olmayan yazılardır. Genellikle bu gibi bir tutarsızlığı "iyileştirmek" ve "sonuç olarak" sistemin tekrar tutarlı hale gelmesi için mekanizmalar vardır (yani yeni bir şey yazılana kadar her zaman bir kez daha aynı değeri verir). Bu, çoğu zaman "nihayetinde tutarlı" olarak adlandırılmalarıdır. Tutarsızlıklar ortaya çıkabilir (ve olacak), ancak her zaman eninde sonunda çözülecek ve uzlaştırılacaktır.

Paxos ile, düğümler arasında atomik harfler yazılabilir ve bu nedenle düğümler arasındaki tutarsızlıklar önlenebilir. Paxos algoritması, hatalı olmayan düğümlerin hiçbir zaman bir yazının sonucu üzerinde hiçbir zaman katılmadıklarını garanti etmeyi mümkün kılar. Ya yazı her yerde ya da hiçbir yerde başarılı olmamıştır. Herhangi bir noktada hiçbir zaman tutarsız okumalar olmayacaktır (eğer doğru bir şekilde uygulandıysa ve tüm varsayımlar geçerli ise). Bununla birlikte, bu bir maliyete varıyor. Temel olarak, sistemin bazı istekleri geciktirmesi ve örneğin çok fazla düğüm (veya aralarındaki iletişim) çalışmadığı zaman kullanılamayabilir. Bu tutarsız cevapların verilmediğinden emin olmak için gereklidir.

Özetlemek gerekirse: asıl fark, Dinamo benzeri sistemlerin yazım sırasında veya bir süre başarısızlıktan sonra tutarsız sonuçlar verebilmesidir (ancak sonuçta ondan kurtulacaktır), ancak Paxos tabanlı sistemler hiçbir zaman böyle bir durumun olmadığını garanti edebilir. Tutarsızlıklar bazen ulaşılamıyor ve istekleri geciktiriyor.

1

Fark yoktur. Bir çekirdeğin tanımı, iki çekirdeğin kesişiminin boş olmadığını söylüyor. Basit çoğunluk nisabı bir tanım değil bir örnektir. Lamport'un daha sonraki "Dikey Paxos" gazetesine bir göz atın, burada başka bir olası nisap konfigürasyonu verdi.

Çok aşamalı paxos protokolü (AKA Multi-Paxos), kararlı durumda, sadece iki fazlı bir işlemdir. Oy numarası değişiklikleri sadece lider başarısız olduğunda gereklidir.

ZookePerer'in çoğaltma protokolü (ZAB) ve RAFT'ları Paxos'u temel alır. Farklılıklar hata tespitinde ve bir liderin başarısız olması sonrasında geçişte.

İlgili konular