Raft konsensüs algoritması

Raft fikir birliği algoritması, bir durum makinesini bir bilgisayar sistemi kümesine dağıtan bir bilgisayar algoritmasıdır. Kümedeki her düğümün, arızalar karşısında bile aynı dizi durum geçişleri üzerinde anlaşmasını sağlar. Algoritma, arıza çözümü için Paxos protokollerine daha kolay anlaşılan bir alternatif olarak tasarlandı. C ++, Java ve Scala gibi açık kaynak referans uygulamalarına sahiptir.

Konsensüs nedir

Mutabakat, her sunucunun oylarına dayalı olarak birden çok sunucunun belirli bir değer üzerinde anlaşmaya varması sürecidir. Bir değer hakkında bir karar verildiğinde, karar nihaidir. Karar verilen değer bir sunucu tarafından sunulmalıdır, yani mutabakat algoritması kendi başına bir değer tasarlayamaz. En basit haliyle, değer 0 veya 1 olabilir ve tüm sunucuların bir şeyi yapıp yapmamaya karar vermesine izin verir. Mutabakat, matematiksel bir hesaplama modeli olan çoğaltılmış durum makineleri bağlamında kullanılır.

Raft nasıl çalışır?

Raft, kümede bir lider seçerek işlev görür. Bir kümedeki bir sunucu ya lider ya da takipçidir ve liderin müsait olmaması durumunda muhtemelen bir aday olabilir. Lider, günlüğün diğer sunuculara kopyalanmasını yönetir ve istemci isteklerini kabul eder. Bir lider başarısız oluncaya veya bağlantısı kesilene kadar liderlik eder, bu durumda adaylar arasından yeni bir lider seçilir. Veri tek yönde akar: liderden diğer sunuculara.

Raft, fikir birliğini üç bağımsız alt soruna böler:

  • Lider seçimi: Mevcut lider başarısız olduğunda, yeni bir liderin seçilmesi gerekir.
  • Günlük çoğaltma: Çoğaltma yoluyla, liderin kendi sunucusunu diğer tüm sunucuların günlükleriyle senkronize tutması gerekir.
  • Güvenlik: Bir sunucu zaten o dizin için bir günlük girişi taahhüt etmişse, başka hiçbir sunucu belirli bir dizindeki günlük girişi için başvuramaz. Bu, günlüklerin tutarlı olmasını ve duruma göre aynı komut setini yürütmesini sağlamak içindir.

Raft, dağıtılmış sistemlerde çoğaltma için kullanılabilir. Performans veya doğruluktan ödün vermeden güçlü ve tutarlı sistemler oluşturur. TiDB ve YugabyteDB gibi dağıtılmış veritabanları, NewSQL veritabanı yönetimi için lider seçimi ve veri replikasyonu için Raft'ı kullanır.