yazılım

Ölçeklenebilirlik, Raft ve Consensus – Bölüm 1

Raft son dönemde pek çok farklı uygulama içerisinde kullanılmaya başlandı, bunun en büyük nedeni çeşitli makale, görselleştirme, demo ile biz yazılımcılara basitçe anlatılabilmesi. Raft’ın bilgisayar bilimindeki  tanımı “bir consensus algoritması”dır ancak bu cümle sizlere hiç bir şey ifade etmeyebilir zira cevaplanması gereken başka sorularınız vardır. Bu sorulardan biri sanırım “iyide, consensus nedir” sorusudur.

Consensus kelimesinin anlamı uzlaşmadır.  Bu bilgi ile yukarıdaki tanımı yeniden oluşturduğumuzda “Raft bir uzlaşma algoritmasıdır” haline geldi değil mi?   Elbette ki bu yeni bir soruyu daha getirdi. Uzlaşma nedir?

Bilgisayar bilimlerinde Uzlaşma farklı anlamlara gelebilir, bu tanım algoritma veya protokol içerisinde kesin ve net olarak tanımlanır. Biz şu aşamada çok geniş bir tanımlama yapacağız, Kabaca Uzlaşma;  kontrol ettiğimiz bilgisayarlar topluluğu içerisinde bizim için yeterli sayıdaki grubun gönderdiğimiz iş veya mesajı işlemesi/kabul etmesidir.

Kabaca örnek vermeye çalışayım; Elimizdeki yazılımımız yedekleme işini yapmak ile sorumlu ve %100 uzlaşmaya ihtiyaç duyuyor.  Elimizde 1gb büyüklüğünde bir dosya  ve grup içerisinde de 10 adet bilgisayar var,  Bu 1gb veriyi 10 bilgisayara gönderdiğimizde, 10 bilgisayardan 10’u da bu veriyi alıp disk’e yazıp bu işlemin başarı ile sonuçlandığını söyler ise uzlaşma sağlanmış demektir. Bu aşamada bu dosyanın kalıcı olarak saklanması gerektiğini söyleyen bir mesaj gönderilerek (commit) işlemi sonladırır.

10 bilgisayardan bir veya daha fazlası bu işlemi yapamayacağını söyler ise (disk üzerinde yeterli alanı yok diyelim) uzlaşma sağlanamaz ve grup içerisindeki bilgisayarlara mevcut dosyanın silinmesi gerektiğini belirten bir mesaj gönderilir (rollback).

Raft bu uzlaşma kuralını %50+1 olarak belirler. Eğer grup içerisindeki toplam bilgisayarların %50+1’i işlemi gerçekleştirebilmiş ise uzlaşma sağlanmış demektir, geriye kalan %50-1 ise uzlaşma sağlanmış olan durumu (yukarıdaki örnekte dosyanın diskde saklanması/yedekleme)  bir ara kendi disklerine alacaklar ve %100 uzlaşma sağlanmış olacak.

Yukarıda bahsi geçen işlemi elbette Raft kullanarak gerçekleştirmek zorunda değilsiniz. Kendi çözümlerinizi geliştirmekte özgürsünüz ancak unutmayın ki her çözüm kendi problemlerini getirecektir.

Yukarıda Raft’ın uzlaşma için %50+1 kuralına sahip olduğunu belirttik, peki geriye kalan %50-1’in durumu ne olacak? Bu noktada yazılımınız bu tür durumları göz ardı edebilecek bir uygulama değil ise başka çözümler bulmak zorundasınız.

Yukarıdaki bilgiler ışığında şunu rahatlıkla söyleyebiliriz; Consensus algoritmaları eninde sonunda istikrarlı bir yapı oluşturulmasını sağlar.

Standart