日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

分布式系統(tǒng)的經(jīng)典理論

分布式系統(tǒng)從誕生到現(xiàn)在已經(jīng)有幾十個年頭了,其中伴隨著一些很重要的基礎(chǔ)理論,正是這些影響深遠的基礎(chǔ)理論,奠定了分布式系統(tǒng)的堅實基礎(chǔ),造就了分布式領(lǐng)域的一座座宏偉大廈。為了練就一身武功,讓我們從這些經(jīng)典的分布式理論開始學起吧。

架構(gòu)解密從分布式到微服務(wù):分布式系統(tǒng)的設(shè)計理念

 

從分布式系統(tǒng)的設(shè)計理念說起

分布式系統(tǒng)的首要目標是提升系統(tǒng)的整體性能和吞吐量。如果最終設(shè)計出來的分布式系統(tǒng)占用了10臺機器才勉強達到單機系統(tǒng)的兩倍性能,那么這個分布式系統(tǒng)還有存在的價值嗎?另外,即使采用了分布式架構(gòu),也仍然需要盡力提升單機上的程序性能,使得整體性能達到最高。所以,我們?nèi)匀恍枰莆崭咝阅軉螜C程序的設(shè)計和編程技巧,例如多線程并發(fā)編程、多進程高性能IPC通信、高性能的網(wǎng)絡(luò)框架等。

另外,任何分布式系統(tǒng)都存在讓人無法回避的風險和嚴重問題,即系統(tǒng)發(fā)生故障的概率大大增加:小到一臺服務(wù)器的硬盤發(fā)生故障或宕機、一根網(wǎng)線壞掉,大到一臺交換機甚至幾十臺服務(wù)器一起停機。分布式系統(tǒng)下故障概率的增加,除了受到網(wǎng)絡(luò)通信天生的不可靠性及物理上分布部署的影響,還受到X86服務(wù)器品質(zhì)等的影響。

所以,分布式系統(tǒng)設(shè)計的兩大關(guān)鍵目標是性能與容錯性,而這兩個目標的實現(xiàn)恰恰是很棘手的,而且相互羈絆!舉個例子,我們要設(shè)計一個分布式存儲系統(tǒng),出于對性能的考慮,在寫文件時要先寫一個副本到某臺機器上并立即返回,然后異步發(fā)起多副本的復(fù)制過程,這種設(shè)計的性能最好,但存在“容錯性”的風險,即在文件寫完后,目標機器立即發(fā)生故障,導(dǎo)致文件丟失!如果同時寫多個副本,在每個副本都成功以后再返回,則又導(dǎo)致“性能”下降,因為該過程取決于最慢的那臺機器的性能。

架構(gòu)解密從分布式到微服務(wù):分布式系統(tǒng)的設(shè)計理念

 

由于性能指標是絕對的,而容錯性指標是相對的,而且實際上對于不同的數(shù)據(jù)與業(yè)務(wù),我們要求的容錯性可以存在很大的差異,比如允許意外丟失一些日志類的數(shù)據(jù);允許一些信息類的數(shù)據(jù)暫時不一致但最終達到一致;對交易類的數(shù)據(jù)要求有很高的可靠性。所以我們會發(fā)現(xiàn),很多分布式系統(tǒng)的設(shè)計都提供了多種容錯性策略,以適應(yīng)不同的業(yè)務(wù)場景,我們在學習和設(shè)計分布式系統(tǒng)的過程中也需要注意這一特性。

下面繼續(xù)談?wù)劮植际较到y(tǒng)設(shè)計中的兩大思路:中心化和去中心化。

在分布式架構(gòu)設(shè)計里,中心化始終是一個主流設(shè)計。中心化的設(shè)計思想很簡單,分布式集群中的節(jié)點器按照角色分工,大體上分為兩種角色:Leader和 Worker。Leader通常負責分發(fā)任務(wù)并監(jiān)督Worker,讓 Worker一直在執(zhí)行任務(wù);如果Leader "發(fā)現(xiàn)某個Worker 因意外狀況不能正常執(zhí)行任務(wù),則將該Worker 從 Worker隊列去除,并將其任務(wù)分給其他Worker。基于容器技術(shù)的微服務(wù)架構(gòu)Kubernetes就恰好采用了這一設(shè)計思路。

在分布式中心化的設(shè)計思路中,還有一種設(shè)計思路與編程中敏捷開發(fā)的思路類似,即充分相信每個 Worker,Leader只負責任務(wù)的生成而不再指派任務(wù),由每個 Worker自發(fā)領(lǐng)任務(wù),從而避免讓個別Worker執(zhí)行的任務(wù)過多,并鼓勵能者多勞。

中心化設(shè)計存在的最大問題是Leader的安全問題,如果Leader出了問題,則整個集群崩潰。但我們難以同時安排兩個Leader 以避免單點問題。為了解決這個問題,大多數(shù)中心化系統(tǒng)都采用了主備兩個Leader 的設(shè)計方案,可以是熱備或者冷備,也可以是自動切換或者手動切換,而且越來越多的新系統(tǒng)都具備了自動選舉切換Leader 的能力,以提升系統(tǒng)的可用性。中心化設(shè)計還存在另外一個潛在的問題,即Leader的能力問題,如果系統(tǒng)設(shè)計和實現(xiàn)得不好,問題就會卡在 Leader身上。

下面一起探討去中心化設(shè)計。

在去中心化設(shè)計里通常不區(qū)分Leader 和 Worker這兩種角色。全球互聯(lián)網(wǎng)就是一個典型的去中心化的分布式系統(tǒng),聯(lián)網(wǎng)的任意節(jié)點設(shè)備宕機,都只會影響很小范圍的功能。去中心化設(shè)計的核心是在整個分布式系統(tǒng)中不存在一個區(qū)別于其他節(jié)點的Leader,因此不存在單點故障問題,但由于不存在 Leader,所以每個節(jié)點都需要與其他(所有)節(jié)點對話才能獲取必要的集群信息,而分布式系統(tǒng)通信的不可靠性大大增加了上述功能的實現(xiàn)難度。

去中心化設(shè)計中最難解決的一個問題是“腦裂”問題,這種情況的發(fā)生概率很低,但影響很大。腦裂指一個集群由于網(wǎng)絡(luò)的故障,被分為至少兩個彼此無法通信的單獨集群,此時如果兩個集群各自工作,則可能會產(chǎn)生嚴重的數(shù)據(jù)沖突和錯誤。一般的設(shè)計思路是,當集群判斷發(fā)生了腦裂問題時,規(guī)模較小的集群就“自殺”或者拒絕服務(wù)。

實際上,完全意義的真正去中心化的分布式系統(tǒng)并不多見。相反,在外部看來去中心化但工作機制采用了中心化設(shè)計思想的分布式系統(tǒng)不斷出現(xiàn)。在這種架構(gòu)下,集群中的Leader是被動態(tài)選擇出來的,而不是人為預(yù)先指定的,而且在集群發(fā)生故障的情況下,集群的成員會自發(fā)地舉行“會議”選舉新的Leader 主持工作。最典型的案例就是ZooKeeper 及用Go實現(xiàn)的Etcd。

架構(gòu)解密從分布式到微服務(wù):分布式系統(tǒng)的設(shè)計理念

分享到:
標簽:架構(gòu)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定