Raft-ი არის ერთ-ერთი ყველაზე პოპულარული კონსენსუსის პროტოკოლი, რომელიც მონაცემთა რეპლიკაციას უზრუნველყოფს. მისი მთავარი მიზანია კვანძების მწყობრიდან გამოსვლის შემთხვევაში სისტემის გამართული მუშაობა და ერთიანი ლიდერის კოორდინაცია. etcd, CockroachDB და TiKV — ეს იმ სისტემების არასრული ჩამონათვალია, რომლებიც სწორედ Raft-ს ეყრდნობა.

როგორ მუშაობს Raft-ი ტრადიციულად?

სტანდარტულ რეჟიმში ლიდერი იღებს მომხმარებლის მოთხოვნებს და ანაწილებს მათ მიმდევარ კვანძებზე. ცვლილება მაშინ ითვლება დადასტურებულად, როდესაც კვანძების უმრავლესობა მას დაადასტურებს. მაგალითად, 5-კვანძიან კლასტერში საჭიროა მინიმუმ 3 კვანძის შეთანხმება.

ეს მიდგომა უზრუნველყოფს სისტემის გამძლეობას ორი კვანძის ავარიის მიმართ. თუმცა, მკვლევარმა როჰან პადჰიემ შემოგვთავაზა ალტერნატიული მიდგომა, რომელიც „სასრული პროექციული სიბრტყეების“ მათემატიკურ მოდელს იყენებს.

მათემატიკური სიზუსტე: Spot It!-ის თამაშიდან კლასტერებამდე

პადჰიეს იდეა ეფუძნება კარტის თამაშს, რომელიც ცნობილია როგორც „Spot It!“. თამაშის დიზაინი იყენებს სასრულ პროექციულ სიბრტყეებს, რაც უზრუნველყოფს, რომ ნებისმიერ ორ კარტს ზუსტად ერთი საერთო სიმბოლო ჰქონდეს.

ამავე პრინციპის გამოყენებით, 57-კვანძიან სისტემაში, ტრადიციული უმრავლესობის (29 კვანძი) ნაცვლად, კონსენსუსისთვის შესაძლოა მხოლოდ 8 კვანძი იყოს საკმარისი. ეს ქმნის ე.წ. „ბლოკებს“, სადაც ნებისმიერი ორი ბლოკი ერთმანეთს მინიმუმ ერთი კვანძით კვეთს. სწორედ ეს კვეთა უზრუნველყოფს სისტემის თანმიმდევრულობას.

პრაქტიკული მაგალითი: Fano-ს სიბრტყე

7-კვანძიანი სისტემის შემთხვევაში, Fano-ს სიბრტყის გამოყენებით, კვორუმისთვის საკმარისია 3 კვანძი. ეს ნიშნავს, რომ სისტემა განაგრძობს მუშაობას მაშინაც კი, როდესაც 4 კვანძი მწყობრიდან არის გამოსული, რაც კლასიკური Raft-ის პირობებში წარმოუდგენელი იქნებოდა.

რა თქმა უნდა, ამ მეთოდს აქვს თავისი სირთულეები. მაგალითად, ყველა კვანძის კომბინაცია არ წარმოადგენს ვალიდურ ბლოკს. მიუხედავად ამისა, ეს მიდგომა გვაძლევს ახალ პერსპექტივას, როგორ გავხადოთ განაწილებული სისტემები უფრო მდგრადი არახელსაყრელ პირობებში.