Kendi Mutabakatınızı Oluşturma | Hackaday


Her gün birbiriyle konuşan milyarlarca bilgisayar varken herhangi bir şeye nasıl karar veriyorlar? Bir veritabanı veya sunucu dağıtımında bile, veritabanını oluşturan farklı bilgisayarlar hangi değerlerin işlendiğine nasıl karar verir? Saatin kaç olduğu konusunda nasıl anlaşıyorlar? Nasıl bir fikir birliğine varırlar?

Ama önce, bilgisayarlar bağlamında mutabakat kavramı nedir? Özetle, ilgili tüm aracıların tek bir değer üzerinde anlaşması gerekir. Ancak, muhalif, yanlış veya kusurlu aracılar için ödenekler protokolde tasarlanmıştır. Her doğru temsilci yanıt vermelidir ve tüm uygun aracılar aynı cevaba sahip olmalıdır. Bu, özellikle veri merkezleri veya ağ ağları için önemlidir. Ağ bölümlenirse, bazı düğümler çevrimdışı olursa veya yazılım garip bir şekilde çökerek garip bozuk veriler gönderirse ne olur? En yaygın mutabakat algoritmalarından biri Raft’tır.

Sal

Verilerin Gizli Yaşamları bir aracılar arasında Raft algoritması içinde verilerin nasıl aktığının harika animasyonlu gösterimi. Raft GitHub sayfası da faydalı diyagramlara sahiptir. Raft, seçilmiş bir lider tarafından hata toleransı sunan kanıtlanabilir garantilere sahiptir. Daha da önemlisi, bu seçilmiş lider, Bizans başarısızlıklarında bir zayıflığa yol açıyor, ancak buna daha sonra değineceğiz. Cockroach DB, Splunk ve MongoDB gibi veritabanları genellikle, aracıların bir veritabanındaki işlemler gibi bir dizi durum geçişinde anlaşmalarına izin vermek için özellikle ayarlanmış olan Raft’ı kullanır. Raft algoritmasını özetlemek gerekirse, iki bölüm vardır: lider seçimi ve günlük çoğaltma.

Birbiriyle iletişim kuran bir dizi sunucu ve mesaj üreten bir istemci düşünün. Bu mesajlar, “Y kaydını 6’ya ayarla” veya “kimliği = 1230231 olan satırı sil” gibi herhangi bir şey olabilir. Sunucular ilk geldiğinde, takipçi durumundadırlar ve kalp atışı yoluyla bir liderden haber almak isterler. 150 ila 300 ms içinde kalp atışı almazlarsa seçimde aday olmaya çalışırlar. Sunucular daha sonra adayları oylar ve oyların bölünmesi durumunda seçim dönemi sona erer ve döngü yeniden başlar. Zaman aşımları, bölünmüş oyları önlemek için rastgele dağıtılır.

Müşteri mevcut lidere mesaj gönderir ve ardından lider mesajı tüm takipçilere kopyalar. Takipçilerin çoğunluğundan yanıt alınca, mesaj taahhüt edilmiş kabul edilir. İletiler, tüm sunucularda tutarlı olması için bir günlüğe eklenir. Lider arızası durumunda yeni seçilen liderin logları kullanılır ve tutarsız girişler silinir. Herhangi bir takipçinin seçim için dikkate alınabilmesi için en güncel taahhüt kaydına sahip olması gerektiğinden, çoğunluğa taahhüt edilen verilerin kaybolmamasını sağlar.

Bizans Başarısızlıkları

Bizans Generalleri” Lord Belbury tarafından: Herkesin mesajı alıp almadığını nasıl anlarsınız?

Bahsedildiği gibi, Raft/Paxos sunucu arızalarına karşı koruma sağlar, Bizans başarısızlıkları. Adı, bazı generallerin güvenilmez olduğu ünlü Bizans Generalleri sorunundan geliyor. Bir şey söylerler ama başka bir şey yaparlar. Raft, bir sistem çöktüğünde başarısız olduğunu ve yeniden başladığını varsayar. Cihaz tutarsız veriler üretmeye, hatalı davranmaya ve hatta düşman bir varlık tarafından ele geçirilmeye devam edebileceğinden, donanım açısından durum böyle değildir.

Bununla birlikte, uçak veya uzay gemisindekiler gibi birçok gerçek zamanlı sistem, Bizans’ın başarısızlıklarını akılda tutmalıdır. Bir bileşen hatalı veriler üretebilir ve sistemlerin geri kalanının bu sorunu çözmesi gerekir. Bu, diğer sunucuların eylemlerini doğrulamak, verileri imzalamak ve hatta almak için ek mesajlarla yapılabilir. lider fikrinden tamamen kurtulmak.

Kilit Adım Protokolü

Gerçek zamanlı bir strateji oyunu oynadıysanız, inanılmaz derecede yavaş bağlantılara sahip düzinelerce oyuncu arasında oyunun nasıl tutarlı olabileceğini merak edebilirsiniz. Ne yazık ki, Age of Empires için ağ iletişimi, 28.8 modemin nispeten standart olduğu 1996 yılında geliştirildi. Öyleyse, çılgın ağ gecikme dalgalanmalarıyla yedeklenecek saniyede birkaç bitiniz varken, ekrandaki her bir nesnenin konumunu ve güncellemelerini nasıl seri hale getirebilirsiniz? Cevap, yapmadığınızdır.

harika bir şey var gerçek zamanlı olarak koşan 1500 okçuya sahip olma hakkında makale itibaren [Paul Bettner], Age of Empires üzerinde çalışan (diğer şeylerin yanı sıra). Cevap, oyundaki her nesnenin durumundan ziyade yalnızca oyuncuların eylemlerini göndermektir. Her oyun tamamen aynı simülasyonu çalıştırır ve her oyuncunun komutları, her oyuncunun bilgisayarında simüle edilir. Birçok yönden, bu tıpkı Raft protokolü gibidir: mesajlar iletilir ve salt okunur bir günlüğe eklenir ve günlük her zaman tüm bilgisayarlarda tutarlı olmalıdır. Ancak Raft’ın aksine lider yoktur ve her sunucu aynı zamanda bir müşteridir. Bir ev sahibi var, ancak oyunun durumu hakkında gerçek bir otorite yok.

Tüm müşterilerde tutarlı olan monoton bir dönüş numarası vardır. Her komut iki turda çalıştırılacak şekilde planlanmıştır. Bu, oyun simüle edilirken komutun gönderilmesine, onaylanmasına ve işlenmesine izin verir. Bu, simülasyonun yalnızca en yavaş makine kadar hızlı çalışabileceği anlamına gelir ve oyunu oynanabilir tutmak için bir dönüşün uzunluğunu değiştiren bir hız kontrol cihazı vardır. İşleme süresini dönüş süresinden ayırarak, oyun, dönüş hızı nispeten düşük olsa bile oyuncu için pürüzsüz kalır.

Her istemci aynı simülasyonu çalıştırdığı için hile yapmak zordur (yine Bizans sorunu). Kafa karıştırıcı veya anlamsız mesajlar gönderen herhangi bir müşterinin senkronizasyonu bozuldu ve oyundan atıldı. Bununla birlikte, düşündüğünüz gibi, farklı işlemcilere ve potansiyel olarak farklı mimarilere sahip düzinelerce makinede tutarlı olacak rastgelelik ve olasılıklara sahip bir simülasyon elde etmek, en hafif tabirle zorlayıcıdır.

Kripto

Burada, Hackaday’de, Bitcoin’in gerçek madencilik tarafına odaklanma eğilimindeyiz, ancak ağ bir sonraki hash üzerinde nasıl anlaşıyor? Proof of Work’ün gerçek gücü budur. Kötü aktörlerin büyük bir yüzdesini barındırabilen, büyük ölçekte dağıtılmış bir konsensüs algoritmasıdır. Ayrıntılara girmeyeceğiz (belki başka bir zaman için bir makale). Günün sonunda, blok zincirinin tek gücü ve onunla birlikte gelen tüm yutturmaca budur. Bu, merkezi olmayan bir şekilde hepimizin hemfikir olabileceği bir giriş günlüğü. Chia, benzer bir prensipte çalışan ancak iş ispatı yerine hisse ispatı kullanan ancak özünde aynı konsepte sahip başka bir kripto para birimidir.

Fikir Birliği Her Yerde

Uçaklardan web hizmetlerine ve kripto para birimlerine kadar her yerde fikir birliği var. Sonuç olarak, her biri farklı ödünleşimlere ve performans profillerine sahip yüzlerce mutabakat algoritması vardır. Belki bir dahaki sefere paylaşılan değerler üzerinde anlaşması gereken birçok düğüm içeren ağ ölçeğinde bir IoT projesi uygularken bazı fikirlere buradan ulaşabilirsiniz.


Kaynak : https://hackaday.com/2022/11/30/building-your-own-consensus/

Yorum yapın