הסבר על אלגוריתם RAFT

| 1 min read

Week Of: 2021-11-14
2021-11-14

home/Professional

RAFT

תיאור כללי

אלגוריתם שנועד לניהול Nodes כאשר רק אחד מהם הוא הראשי והאחרים הינם "עוקבים"
המחשה של האלגוריתם: Raft (thesecretlivesofdata.com)

תיאור במלים

אם יש לי שני DB ואני רוצה לסנכרן את המידע.
יש לי עדכונים כפולים וכו' מי הוא המאסטר?
אז יש לי שלשה נודים -

  1. Follower יש לי לידר שמוביל אותי
  2. candidate אני מסוגל להיות המוביל
  3. leader - אני המנהיג

זה מתחיל כשכולם הם Candidate ואנחנו צריכים להסכים מיהו הלידר.
כל נוד יכול לבקש שלש סוגים של בקשות להיות מנהיג, שהשני יהיה מנהיג ושהשלישי יהיה מנהיג.
אני מבקש מכולם להיות מנהיג. אז אם כולם רוצים אז לא תהיה הסכמה.
שלחנו בקשה.
אם הסכמנו, סבבה.
אם לא, אז הבורר (המערכת) שולח לכל אחד Timeout שונה לכל אחד ואז מתישהו תהיה שונות ושנים ימליצו על מישהו שבסוף ייבחר (גם אם זה לא בו זמנית אלא המלצה מצטברת)
מי שהוא נפלט מהמרוץ, הופך להיות Follower
יש לנו Leader. (עד הנפילה שלו מתישהו - שלא תהיה..)
הוא מקבל עדכון כלשהו מEvent אז הוא שולח לכל ה"עוקבים" שלו את העדכון.
וכך זה עובד עד הנפילה.
ממתי שיש נפילה, התהליך של ה-Leader Election מתחיל מחדש
ואז נוד אחר הופך להיות Leader.
ואז אם יש לי Load Balancer אני מפנה את המבקשים שירות לאחד הNodes הפנויים שמשמשים כרגע (כל עוד הם Followers) למטרות ReadOnly כאשר רק ה-Leader הוא משמש ל-Write בלעדי ו-Source of truth. או שהוא משמש ל-Write בלעדי עבור דברים מסויימים בלבד ועבור דברים אחרים הוא יפנה לנודים אחרים.