芒果视频下载

品牌分類   知識分類          
移動端
  • 買購網APP
  • 手機版Maigoo
  

分布式系統為什么具有健壯性 怎么構建健壯的分布式系統

本文章由注冊用戶 知無涯 上傳提供 2024-11-30 評論 0
摘要:分布式系統的處理和控制功能是分布的,單一站點產生的故障不會對整個系統造成太大的影響,即使設備故障,也可以通過容錯技術實現系統的重構,因此分布式系統一般都具有健壯性,不過構建分布式系統時,還是要注意通過最小化組件間依賴、隔離錯誤、在系統中建立緩沖區等方法,構建更健壯的分布式系統。下面一起來看看分布式系統為什么具有健壯性以及怎么構建健壯的分布式系統吧。

一、分布式系統為什么具有健壯性

健(jian)壯(zhuang)性是指在異常和危(wei)險情況下系(xi)統生(sheng)存的能力,分布(bu)式系(xi)統一般具有健(jian)壯(zhuang)性,這是因為:

1、分布式系統的(de)處理(li)和控(kong)制功能是分布的(de),任何站點發(fa)生的(de)故障都(dou)不(bu)會給整個系統造成(cheng)太大的(de)影(ying)響。

2、當分布式系統(tong)中的設備出現故障(zhang)時,可(ke)以(yi)通過容錯技術(shu)實現系統(tong)的重構,以(yi)保證系統(tong)的正(zheng)常(chang)運(yun)行。

二、怎么構建健壯的分布式系統

分(fen)(fen)布(bu)式系(xi)統(tong)一般都具有(you)健(jian)壯性,不過面對越(yue)來越(yue)普遍(bian)隨機故障,如果系(xi)統(tong)構(gou)建不當的話,也會導(dao)致系(xi)統(tong)運行出現(xian)問題,要構(gou)建健(jian)壯的分(fen)(fen)布(bu)式系(xi)統(tong),主要注意以下(xia)幾點(dian):

1、最小化組件間依賴

分布式系統的組件(jian)相互通信以(yi)獲(huo)取數據(ju)或功能。在這兩種(zhong)情況下,我們都可(ke)以(yi)通過(guo)將數據(ju)/功能推送到調用組件(jian)而不是遠(yuan)程訪問來減(jian)少(shao)連接需求(qiu)。

構(gou)建(jian)大(da)規模分(fen)布式系統(tong)迫使我們放棄標(biao)準軟件(jian)工程(cheng)的許多(duo)“最佳實踐”。要(yao)記住的關鍵是,當我們采用分(fen)布式系統(tong)的復雜性來(lai)實現(xian)可擴展(zhan)性時,我們還需要(yao)盡(jin)可能地(di)控制(zhi)“分(fen)布”。

(1)重復數據

如果我(wo)們經常從另一個組(zu)件(jian)訪問一些數(shu)據,我(wo)們可(ke)以在(zai)我(wo)們的(de)組(zu)件(jian)中復制(zhi)它,而不必在(zai)運行(xing)時(shi)檢索它。這可(ke)以大(da)大(da)減少運行(xing)時(shi)依賴(lai)并幫助(zhu)改(gai)善(shan)我(wo)們組(zu)件(jian)的(de)延(yan)遲。

經常訪問但有一定(ding)規(gui)律性變(bian)化的(de)數(shu)據(ju)可(ke)(ke)以(yi)通過(guo)定(ding)期緩存刷新來臨時緩存。更改頻率更低或(huo)從不更改的(de)數(shu)據(ju)(例(li)如客戶姓名)可(ke)(ke)以(yi)直(zhi)接(jie)存儲(chu)在我們(men)的(de)組(zu)件中。如果/當(dang)這些(xie)數(shu)據(ju)發生變(bian)化時,我們(men)可(ke)(ke)能(neng)需要做一些(xie)額外的(de)工作,但是這種增加的(de)小開銷通常是值得的(de),因為它可(ke)(ke)以(yi)提高彈性。

(2)非規范化數據

非規范(fan)化是在(zai)組件內發(fa)生的一種特殊形式(shi)的重(zhong)復(fu)。如果(guo)我們使用關系(xi)數據存儲(chu),我們可以(yi)通過在(zai)主實體(ti)中復(fu)制(zhi)數據來降低查看多個(ge)實體(ti)的成本(ben)。本(ben)地化分散數據以(yi)獲得更(geng)好(hao)性能的原則(ze)也適用于此。

(3)庫

為(wei)(wei)了減輕另一個(ge)組(zu)(zu)件(jian)的(de)(de)功(gong)能依(yi)賴性,我們可(ke)以將遠程組(zu)(zu)件(jian)打包為(wei)(wei)庫(ku)并(bing)(bing)將其嵌入到我們的(de)(de)組(zu)(zu)件(jian)中(zhong)。這并(bing)(bing)不(bu)總是(shi)可(ke)能的(de)(de)(它可(ke)能是(shi)用其他語言編寫的(de)(de),或者太(tai)大而不(bu)能成為(wei)(wei)一個(ge)庫(ku))并(bing)(bing)且(qie)會帶(dai)來一系(xi)列(lie)問(wen)題(功(gong)能的(de)(de)變(bian)化需要跨(kua)多個(ge)組(zu)(zu)件(jian)進行庫(ku)升級),但是(shi)如果功(gong)能很關鍵并(bing)(bing)且(qie)經常被大規(gui)模訪(fang)問(wen),這是(shi)打破組(zu)(zu)件(jian)間連接(jie)并(bing)(bing)使其成為(wei)(wei)本地(di)的(de)(de)可(ke)行方法。

2、隔離錯誤

錯(cuo)誤隔離很重要,原因有兩個。一(yi)是個別錯(cuo)誤在分布(bu)式系統中更常見(許多移動部件的簡單功(gong)能(neng))。另一(yi)個是,如果(guo)我們不能(neng)防止整個系統中的聯鎖(suo)錯(cuo)誤,那(nei)么我們首(shou)先就失去了構建復(fu)雜體(ti)的理由(you)。

錯誤隔(ge)離的(de)(de)主要結構是(shi)(shi)SLA。每個組件都(dou)聲明了(le)一些質(zhi)量(liang)參(can)數(shu)(shu),它(ta)(ta)將在執行功(gong)能時得(de)到尊重。這些參(can)數(shu)(shu)可以包括延遲(chi)、錯誤率、并發性等。在此(ci)SLA之(zhi)外,調用(yong)它(ta)(ta)的(de)(de)組件會假定它(ta)(ta)已失(shi)敗并需(xu)要自行采取適當的(de)(de)措施。如果組件本身檢測到它(ta)(ta)無法維護(hu)其SLA,它(ta)(ta)可以先發制人地告訴(su)其調用(yong)者暫(zan)停(ting)并稍后再來(lai)調用(yong)。為(wei)了(le)保持整體系統健康,最好是(shi)(shi)快(kuai)速失(shi)敗而不是(shi)(shi)在違(wei)反SLA的(de)(de)情況下成功(gong)。兩個組件(一個被(bei)喚起的(de)(de)和(he)一個喚起的(de)(de))都(dou)必須為(wei)此(ci)設置機制。

(1)保護調用者

A、超時(shi):如果被調(diao)用(yong)的組件在其SLA內沒有響應,調(diao)用(yong)者必(bi)須超時(shi)(放棄)并改用(yong)一些(xie)回退機制(zhi)(即使它拋出錯(cuo)誤)來維護自己的SLA并防止一連串的SLA違規。

B、重試:由于網絡不可靠,分布式系統中的(de)許多(duo)錯誤只是隨機的(de)。如果調用者(zhe)(zhe)自己的(de)SLA允許,調用者(zhe)(zhe)可以(yi)重試該操作。重試的(de)前提是操作的(de)冪等性。即(ji)它(ta)不應(ying)該改變狀態或只做一次(ci),即(ji)使它(ta)被調用了兩次(ci)。

C、斷路器:如果對組件的調(diao)用連(lian)續失敗(bai),調(diao)用者可以通過“打開電路”切斷連(lian)接并停止調(diao)用一(yi)段時間。由(you)于(yu)調(diao)用者已經有一(yi)些(xie)錯誤場景(jing)的備(bei)份(fen)行為,這節(jie)省了調(diao)用者寶貴(gui)的資源(yuan),這些(xie)資源(yuan)本來會被(bei)浪費掉。停止調(diao)用還可以減少被(bei)調(diao)用組件的負載,并給它一(yi)些(xie)恢復的喘息(xi)空間。

(2)保護被調用

A、隨機間隔(ge):雖然重試(shi)可以減少錯(cuo)誤(wu),但(dan)在一(yi)個頻繁使用的組(zu)件中出現一(yi)個小的性能問題可能會導致其所有調用者一(yi)次重試(shi)。這種“重試(shi)風(feng)暴”會造成負(fu)載(zai)峰(feng)值并阻止該組(zu)件恢(hui)復。為了防(fang)止這種情況,重試(shi)應(ying)該在它們之間有一(yi)個隨機的時間間隔(ge),以便(bian)交(jiao)錯(cuo)加載(zai)。

B、背壓(ya):如果一(yi)個組件檢(jian)測(ce)到自(zi)己承受過多的負載并且即將違反其(qi)SLA,它可以(yi)搶先開始丟棄新請求,直到其(qi)性能得到控制。這比接受它知道它不能在SLA內提(ti)供服務或沒有(you)完全崩潰風險的請求要(yao)好(hao)得多。

3、在系統中建立緩沖區

(1)異步通信

消息(xi)總(zong)線之類的異步通信通道允(yun)許調用(yong)遠程(cheng)組(zu)件(jian),而無需(xu)非常嚴格的SLA依賴。通過讓被調用(yong)組(zu)件(jian)準備好而不是立(li)即使用(yong)消息(xi),系統對增(zeng)加的工(gong)作(zuo)負(fu)載的需(xu)求變得(de)更加靈活。

(2)彈性配置

可擴展(zhan)性(xing)最終歸結為充分利用(yong)(yong)可用(yong)(yong)硬(ying)件。但是,如果看到規(gui)模增長,讓系統緩(huan)口氣的一個簡單方法是分配更多(duo)硬(ying)件。雖然這僅在我(wo)們能(neng)夠承受(shou)的成本范圍內是可行的,但它為我(wo)們提供了(le)抵(di)御(yu)不(bu)可預(yu)測的負載變化的最后一道防(fang)線(xian)。

網站提醒和聲明
本站為(wei)注冊用戶(hu)提供信息存儲空間(jian)服務,非“MAIGOO編輯”、“MAIGOO榜單研究員”、“MAIGOO文(wen)章(zhang)編輯員”上傳提供的文(wen)章(zhang)/文(wen)字均是(shi)注冊用戶(hu)自主發布上傳,不代表(biao)本站觀點,版權歸原作者所有,如(ru)有侵權、虛假信息、錯誤信息或(huo)任何問題,請及(ji)時(shi)聯系我們,我們將在第(di)一時(shi)間(jian)刪(shan)除或(huo)更正(zheng)。 申請刪除>> 糾錯>> 投訴侵權>> 網頁上(shang)相(xiang)關信息的(de)知識產(chan)權(quan)歸(gui)網站(zhan)方所有(包括(kuo)但不限于文(wen)字、圖片、圖表(biao)、著作權(quan)、商(shang)標權(quan)、為(wei)用(yong)戶提供的(de)商(shang)業信息等),非(fei)經許可不得抄襲或使用(yong)。
提交(jiao)說(shuo)明: 快速提交發布>> 查看提交幫助>> 注冊登錄>>
發表評論
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可,感謝您的理解及支持!
最(zui)新評論
暫無評論