raft 協(xié)議傳說

故事設(shè)定
  • N個人組成了一個團隊月帝,承包了一棟大樓,對外出租幽污;會不斷有人來租房子嚷辅,每租一間房子,需要多數(shù)人同意距误,才能向租客確認出租潦蝇。同時每個人都會記錄當前還剩多少房子未出租款熬;
  • 大家都愿意將房子租出去,所以只要有租房的需求攘乒,大家都會同意贤牛。
  • 每個人都有可能臨時處理自己的事情而暫時離開團隊。
  • 需要一個接待員则酝,去接待租客殉簸,并征求大家的意見。每個人都可以成為接待員沽讹,成為接待員的前提是在接待員位置空缺時般卑,誰想當接待員都可以向大家爭取意見,獲取大部分人同意的人爽雄,將會成為接待員蝠检。
  • 為了篩選真正需要租賃的客戶,所有人都有回復(fù)顧客的詢問和真正需要進行租賃的時候挚瘟,將顧客指引到接待員那進行真正的租賃叹谁;原則是:租賃業(yè)務(wù)的發(fā)起必須由接待員發(fā)起。
  • 只有在接待員崗位空缺的時候乘盖,每個人都允許發(fā)起多輪投票焰檩,但是每一輪投票,大家只能投一票订框,多數(shù)者獲勝析苫。選出獲勝者之后,會將投票的輪次加一穿扳!在投票的時候衩侥,大家都會評估被選人是否對公司業(yè)務(wù)足夠了解(輪次越高,可能掌握的數(shù)據(jù)就越全面)矛物,也可以理解成酒店管理集團的升級版本顿乒,每次選舉之后,都標識酒店進入新的時代泽谨!優(yōu)先選擇賬本記錄最全的候選者璧榄,如果有候選人發(fā)現(xiàn)自己的投票輪次低于其他候選者,則會自動退出選舉吧雹,同時高版本的成員不會給低版本的成員進行投票骨杂!
  • 最后選出來的接待員,作為整個團隊的接待員
店鋪開業(yè)(分布式一致性)
  • 所有成員需要推選出一個接待員雄卷,來傳達租客的租賃需求搓蚪。在沉默了一段時間之后,有一個比較積極的小伙A丁鹉,說自己可以擔任接待員妒潭,為大家服務(wù)悴能。經(jīng)過投票,小A順利的成為接待員雳灾。公司正式開始開業(yè)漠酿;
  • 按照之前的約定,接待員必須在每個租客谎亩,進行租房的時候炒嘲,先進行登記,然后向大家詢問匈庭,是否可以將房子租出去夫凸,如果大多數(shù)人不在場,比如中午吃飯的時間阱持,就會對外暫停營業(yè)夭拌,所有業(yè)務(wù)都暫時停止。正常營業(yè)時間為了節(jié)省時間衷咽,小A會在咨詢完多數(shù)人之后(之后找時間慢慢的通知其他人鸽扁,在咨詢的時候,大家其實也是先進行登記兵罢,因為不確定這個事情一定能成)献烦,就告訴租客可以出租了滓窍。同時再向大家確認房屋已經(jīng)出租卖词。大家一接到這種通知之后,會自覺的在自己的小本本上將之前登記的記錄變更成真正的賬本來記錄當前還剩多少房子吏夯,已經(jīng)租出去了多少房子此蜈;
  • 就這樣,一段時間內(nèi)噪生,公司運行的非常平穩(wěn)裆赵,大家的帳記錄的也都一樣。
接待員的更替(leader 節(jié)點不可用)
  • 由于租賃業(yè)務(wù)非常繁忙跺嗽,大家都會時不時的盯著接待員是否在崗位上战授,如果發(fā)現(xiàn)接待員不在崗位上,會立即發(fā)起投票桨嫁,選舉自己為接待員植兰;
  • 有時候,有些人會因為自己看花眼璃吧,發(fā)現(xiàn)接待員不在崗位上而發(fā)起投票楣导,但這種意外情況很快就會被制止,因為大部分人還是知道接待員在崗位上的畜挨;
  • 在營業(yè)時間內(nèi)筒繁,選舉時常發(fā)生噩凹;有時候一個人發(fā)現(xiàn)了接待員不在崗位上了,有時候多個人發(fā)現(xiàn)接待員不在崗位上了毡咏,在接待員離開的這段時間內(nèi)驮宴,大家可能因為票數(shù)相同發(fā)起了多輪投票。最終票數(shù)多著獲勝血当。如果在選舉過程中接待員回來了幻赚,也不能再次繼任接待員,也得參與投票臊旭。
  • 新的接待員上任之后落恼,會繼續(xù)對接租賃業(yè)務(wù),登記和通知大家業(yè)務(wù)進展离熏;有時候佳谦,上一個接待員由于某些原因離開的時候,未將某些登記記錄告訴大家滋戳,所以新的接待員也不知道钻蔑。那條未登記的記錄大家都不知道,所以老的接待員回來之后就會被新的接待員通知將之前沒有登記的記錄刪除掉(從現(xiàn)在新接待員最新的記錄開始找奸鸯,找到兩者一樣的數(shù)據(jù)咪笑,然后把之后的全部同步成最新的),只記錄現(xiàn)在有效的記錄娄涩。所以之前進行登記的租戶可能需要重新進行登記窗怒;
公司不間斷的進行運營,大家也都相安無事蓄拣。
  • 故事啟示:為什么不把賬本放到一個地方扬虚,大家一起寫,比如mysql呢球恤?原因是辜昵,如果一個分布式服務(wù)需要嚴重依賴外部服務(wù)來保證數(shù)據(jù)的一致性的話,并不是優(yōu)秀的解決方案咽斧,所以一般靠節(jié)點之間的日志進行記錄堪置,完成數(shù)據(jù)的一致性!將外部存儲作為一個備份张惹,來進行維護舀锨!
解析常見的面試題
  • raft協(xié)議組成部分
    • 接待員(leader), 被選舉人(candidate),其他成員(followers),每個人的小本本(同步日志)诵叁,酒店的升級版本號(term),賬單上的每條記錄(index)
  • raft選舉觸發(fā)時機
    • 只要有人沒看到接待員在崗雁竞,就會容忍一段時間,然后發(fā)起選舉!不管是團隊剛成立還是運營中接待員離崗碑诉!(初始化服務(wù)或中途leader節(jié)點宕機導(dǎo)致followers接不到心跳消息)
  • raft保證數(shù)據(jù)的一致性
    • 每個人都有自己的小本本彪腔,只要接待員要處理業(yè)務(wù),就會征求大家的意見进栽,然后大家登記德挣,等到接待員征求了大部分人之后,會向大家同步結(jié)論快毛,大家統(tǒng)一記賬格嗅,接待員向客戶回復(fù)租賃成功!(leader節(jié)點同步大多數(shù)followers唠帝,followers同意之后屯掖,同步日志,向client回復(fù)成功)
  • raft選舉成功之后襟衰,如果節(jié)點內(nèi)容不一致贴铜,有什么同步手段
    • leader會同步index和快照,完成整體數(shù)據(jù)同步瀑晒!index是一個個同步绍坝,檢查!snapshot是整體同步苔悦!一般都是在一個可以接受的區(qū)間內(nèi)轩褐,如果超過的話,就整體同步玖详!比如一個人離開時間太長了把介,在進來的話,就會整體抄別人的作業(yè)而不是一天天對賬
  • raft中的term概念是什么竹宋,有什么用
    • 酒店的版本劳澄,用于區(qū)分和定位是在那一個輪次以及去掉過期的投票選擇
  • raft協(xié)議選舉投票的前提是什么
    • 酒店成員自己的版本比被選舉人的版本低地技,標識沒有過期蜈七!以及index比被選舉人的低。這樣的話莫矗,不會完成那些高版本飒硅,少數(shù)據(jù)的情況發(fā)生,最終導(dǎo)致數(shù)據(jù)的丟失問題
  • 如果集群節(jié)點中被物理阻斷了作谚,會怎么樣三娩,之后再將物理阻斷去掉會怎么樣
    • 會自己在所屬的空間沒小范圍投票,但是由于得不到多數(shù)人的認可妹懒,所以選舉不成功雀监,輪次不變!等到物理分區(qū)結(jié)束之后,找其他大分區(qū)的leader
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末会前,一起剝皮案震驚了整個濱河市好乐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓦宜,老刑警劉巖蔚万,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異临庇,居然都是意外死亡反璃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門假夺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淮蜈,“玉大人,你說我怎么就攤上這事已卷〗嘎” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵悼尾,是天一觀的道長柿扣。 經(jīng)常有香客問我,道長闺魏,這世上最難降的妖魔是什么未状? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮析桥,結(jié)果婚禮上司草,老公的妹妹穿的比我還像新娘。我一直安慰自己泡仗,他們只是感情好埋虹,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娩怎,像睡著了一般搔课。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上截亦,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天爬泥,我揣著相機與錄音,去河邊找鬼崩瓤。 笑死袍啡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的却桶。 我是一名探鬼主播境输,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嗅剖?” 一聲冷哼從身側(cè)響起蛋逾,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窗悯,沒想到半個月后区匣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蒋院,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年亏钩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欺旧。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡姑丑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辞友,到底是詐尸還是另有隱情栅哀,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布称龙,位于F島的核電站留拾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲫尊。R本人自食惡果不足惜痴柔,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疫向。 院中可真熱鬧咳蔚,春花似錦、人聲如沸搔驼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舌涨。三九已至糯耍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泼菌,已是汗流浹背谍肤。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工啦租, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哗伯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓篷角,卻偏偏與公主長得像焊刹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容