Uzlaşma sorunu dağıtılmış hesaplamada neden bu kadar önemlidir?


19

Dağıtık hesaplamada, fikir birliği sorunu yoğun araştırmaların çekildiği ana konulardan biri gibi görünmektedir. Özellikle, "Dağıtılmış Uzlaşmanın Tek Hatalı Bir Süreçle İmkansızlığı" makalesi 2001 PODC Etkili Kağıt Ödülü'nü aldı .

Öyleyse fikir birliği sorunu neden bu kadar önemli? Teoride ve pratikte fikir birliği ile neler başarabiliriz?

Tüm referanslar veya sergiler gerçekten yararlı olacaktır.

Yanıtlar:


18

Bahsettiğiniz makale 2 nedenden dolayı önemlidir:

  1. Hiçbir olmadığını gösterir asenkron deterministik konsensüs algoritma o bağlamayı tolere tek çarpışma arızası. Not o senkron ayarında, bir deterministik algoritması yoktur, son bulur o mermi zaman süreçleri kazasında.ff+1f
  2. Daha sonra birçok alt sınırda ve imkansızlık kanıtında kullanılan konfigürasyonların (*) iki taraflılığını ve tek anlamlılığını sunar .

Uygulamalar

Fikir birliği sorununun önemli bir uygulaması, bazı küresel eylemlerin başlatılması için hataya dayanıklı bir ortamda bir koordinatör veya liderin seçilmesidir. Bir konsensüs algoritması, bunu önceden bir "süpernode" sabitlemeden (tek bir hata noktası oluşturacaktır) anında yapmanıza izin verir.

Başka bir uygulama, dağıtılmış bir ağda tutarlılığı korumaktır: Aynı ortamı izleyen farklı sensör düğümleriniz olduğunu varsayalım. Bu sensör düğümlerinden bazılarının çökmesi (hatta donanım hatası nedeniyle bozuk veri göndermeye başlaması) durumunda, bir konsensüs protokolü bu tür hatalara karşı sağlamlık sağlar.


(*) Dağıtılmış bir algoritmanın çalıştırılması, bir dizi yapılandırmadır. Yapılandırma, işlemlerin yerel durumlarının bir vektörüdür. Her işlem bir deterministik durum makinesi yürütür. Herhangi bir doğru fikir birliği algoritması eninde sonunda her işlemin aynı giriş değerine (geri dönülmez şekilde) karar verdiği bir yapılandırmaya ulaşmalıdır. Bir yapılandırma olan - değerlikli , eğer hasım ne olursa olsun, tüm olası uzantıları bir karar değerine kurşun . Benzer şekilde, - değerlik tanımlayabiliriz . Bir yapılandırma olan iki değerli iki kararlar erişilebilir olup olmadığını1 C 1 0 C C CC1C10CC(ikisinden hangisine ulaşıldığı düşmana bağlıdır). Açıkçası, hiçbir işlem iki değerlikli bir konfigürasyonunda karar veremez , aksi takdirde anlaşmaya aykırı oluruz! Dolayısıyla, bu iki değerlikli konfigürasyonların sonsuz bir dizisini oluşturabilirsek, bu ayarda bir konsensüs algoritması olmadığını gösterdik.C


2
@AJed Ek olarak: Maurice Herlihy tarafından yapılan kağıt senkronizasyonuna bir göz attım ve şimdi fikir birliği sorununun bir başka büyük teorik çıkarımını sunabiliyorum. Konsensüs sayısı fikrini kullanarak, senkronizasyon ilkellerinin sonsuz bir hiyerarşisi olduğunu gösterebilir, böylece bir düzeyde hiçbir ilkel, daha yüksek seviyelerde herhangi bir ilkelin beklemeden uygulanması için kullanılamaz. Basitçe söylemek gerekirse, konsensüs problemi , ilkel senkronizasyon işlemlerinin göreceli gücünü tanımlama konusunda birleşik bir teori olarak ortaya çıkmaktadır . Zarif.
hengxin

1
FLP imkansızlığının sonucunun kanıtını anlamakta biraz zorlanıyorum. Bana bazı ipuçları verebilir misiniz? Lütfen [FLP kanıtı] 'na bakın ( stackoverflow.com/q/15131730/1833118 ). Teşekkürler.
hengxin

"her sürecin karar verdiği yer" belki de "her doğru sürecin karar verdiği yer" olmalıdır?
nbro

"Düşmanın ne yaparsa yapsın" düşmanın kimde olduğunu açıklamalısınız.
nbro

"C'nin tüm olası uzantıları", "C uzantısı" ile ne demek istiyorsun? Genel olarak bir yapılandırmanın uzantısı nedir?
nbro

7

Hataya dayanıklı deterministik algoritmanın olmadığını gösterir. Oldukça güçlü bir teorik sonuç, tasarımcıları hata toleransı ile farklı şekilde uğraşmaya zorlar, bazıları senkronizasyon ve rastgele.

Yorum: Bence, senkronizasyon sistemin pratik uygulamalarda pek bulunmayan ek bir varsayımıdır.

Referanslar için Wikipedia bağlantısını kontrol edin . Pratik uygulamalar için bu bloga da göz atın


1
Evet, senkronizasyonu rastgele seçmeyi tercih ediyorum. Dağıtılmış bilişimin oynadığı ortam, eşzamansızlık, sınırsız gecikme, beklenmedik başarısızlık ve çok fazla belirleyici olmayan anlamda çok zayıftır. Mükemmel olmadığı sürece, neden çok fazla karmaşıklıktan kaçınırken bazı garantiler elde ederek rasgeleleştirmeyi kullanmıyoruz.
hengxin

1
Senkronizasyondan bahsetmişken, teoride varsayımı sevmiyorum . Ancak, endüstride senkronizasyon veya kısmi senkronizasyon sık sık uygulanır. Örneğin, Google'ın Spanner'ı dünya çapında dağıtılmış senkronize olarak çoğaltılmış bir veritabanıdır. Beni daha az kararlı kılıyor. Senin görüşün nedir?
hengxin

Orada senkronizasyonun nasıl uygulandığını görmek daha iyi olur. Ama çok ilginç bir referans. - demek istediğim, sistemin doğal bir özelliği değil. Buna eklenmelidir.
AJ

Genel olarak, Wikipedia referans olarak vermemelisiniz. Bu Wikipedia makalesini yeni okudum: oldukça eksik ve örgütlenmemiş; kafa karıştırıcı da olabilir.
nbro

5

Fikir birliği sorunlarının önemli olmasının bir nedeni, çok basit olmaları ve dağıtılmış bilgi işlem sistemleri için bir çeşit evrensel problem olmalarıdır .

Zaman uyumsuz dağıtılmış bir sistemde fikir birliğini çözebilirsek, paylaşılan nesneler üzerindeki eylemleri doğrusallaştırmak ve paylaşılan nesneler için doğrusallaştırılabilirlik elde etmek için kullanabiliriz.

Basitlik için, bir değer üzerinde anlaşmaktan kaç tane daha basit olduğunu düşünebilirsiniz?

(Saf) zaman uyumsuz dağıtılmış sistemlerde konsensüs ile ilgili imkansızlık sonucu, bize (saf) zaman uyumsuz dağıtılmış sistemlerde bazı ek "şeyler" olmadan çözmek istediğimiz sorunları çözemeyeceğimizi söyler. Bu, rasgele algoritmalar, hata dedektörleri, kısmi senkron modeller vb. Gibi fikir birliğini çözebileceğimiz asenkron modellere yol açar.

Lamport'un Paxos, Google'ın Tombul, Apache ZooKeeper ve daha yakın zamanda Raft gibi fikir birliğini çözen uygulama algoritmalarının, genellikle sunucular arasında bir durumu çoğaltmak istediğimiz dağıtılmış sistemlerin merkezinde olmasının nedeni de budur.


0

Sadece hesaplamanın doğasının yığın içinde giderek daha fazla dağıtıldığını ekliyorum: birçok CPU, bir makinede birçok işlem, LAN'lar ile bağlı birçok makine, internet tarafından bağlı birçok LAN.

Bu, ortak (dağıtılmış / küresel) durum ilkesi problemini yapar - her algoritma belirli bir durumu varsayar ve hesaplama birden fazla yerde yapılacaksa, o zaman durumun da dağıtılması gerekir.

Bu alandaki etkili makaleler ( Paxos ve son zamanlarda Raft ) alıntı yaptığınız makaleden sonra yayınlandı. Her ikisi de bazı başarısızlıkların varlığında fikir birliği konularını ele almaktadır.

Birkaç yaklaşım kullanılarak dağıtılmış sistemlerde bizans hatalarından kaçınılabilir.

Bizans Hata Toleransı hakkındaki Wikipedia girişine göz atın .


FLP imkansızlık sonucu, en temel başarısızlık (çökme) ayarında bile geçerlidir, bu yüzden Bizans hatalarından kaçınma konusundaki paragrafın amacının ne olduğundan emin değilim. Eğer hatalarımız yoksa, konsensüsün oldukça kolay olduğunu unutmayın: bir sabit işlem değerini yayınlar ve her işlem alındığı anda bu değere karar verir.
Kaveh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.