芒果视频下载

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

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

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

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

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

1、分(fen)布式系(xi)統的處(chu)理和(he)控(kong)制功能(neng)是分(fen)布的,任何站點發生的故障都不(bu)會給整(zheng)個系(xi)統造成太大的影(ying)響。

2、當分布式(shi)系統中的設備出現(xian)故障時(shi),可以(yi)通過(guo)容錯(cuo)技(ji)術實(shi)現(xian)系統的重構(gou),以(yi)保證系統的正常運行。

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

分(fen)布式(shi)系(xi)統(tong)一(yi)般都具有健壯性,不過面對(dui)越來(lai)越普遍隨機故(gu)障,如果系(xi)統(tong)構(gou)建不當的(de)話,也(ye)會導(dao)致系(xi)統(tong)運行出現問題,要構(gou)建健壯的(de)分(fen)布式(shi)系(xi)統(tong),主要注意(yi)以(yi)下幾點:

1、最小化組件間依賴

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

構建大(da)規模分布式系統迫使我們(men)放(fang)棄標準(zhun)軟(ruan)件工程的許多(duo)“最佳實踐”。要記住(zhu)的關鍵(jian)是,當我們(men)采(cai)用分布式系統的復(fu)雜(za)性來實現可擴展(zhan)性時,我們(men)還需要盡(jin)可能(neng)地(di)控制“分布”。

(1)重復數據

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

經常(chang)訪(fang)問但有(you)一定規律性變(bian)化的(de)數據(ju)可(ke)以通(tong)過定期緩(huan)存(cun)刷新來臨時緩(huan)存(cun)。更(geng)改頻率更(geng)低(di)或從不(bu)更(geng)改的(de)數據(ju)(例如(ru)客戶姓(xing)名)可(ke)以直接存(cun)儲(chu)在我們的(de)組件中。如(ru)果/當這些(xie)數據(ju)發生變(bian)化時,我們可(ke)能需要做(zuo)一些(xie)額外的(de)工作,但是這種增加的(de)小開銷通(tong)常(chang)是值得的(de),因為(wei)它可(ke)以提高彈性。

(2)非規范化數據

非規范(fan)化是(shi)在組件內發生的一種特殊形式的重復。如(ru)果我(wo)們(men)使用關系數(shu)據(ju)存儲,我(wo)們(men)可以通過在主實體(ti)中復制(zhi)數(shu)據(ju)來降(jiang)低查看多(duo)個(ge)實體(ti)的成本。本地化分散數(shu)據(ju)以獲得(de)更好性能的原(yuan)則也適用于此(ci)。

(3)庫

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

2、隔離錯誤

錯誤(wu)(wu)隔離很重(zhong)要(yao),原因有兩個(ge)。一是個(ge)別錯誤(wu)(wu)在分(fen)布式系統中更常(chang)見(許多移動(dong)部件的簡單功能(neng))。另(ling)一個(ge)是,如果我(wo)們不能(neng)防止(zhi)整(zheng)個(ge)系統中的聯鎖錯誤(wu)(wu),那么我(wo)們首先就失去了構建(jian)復雜體的理由。

錯(cuo)誤隔離的(de)主(zhu)要結構是(shi)(shi)SLA。每個(ge)組(zu)(zu)件都聲(sheng)明(ming)了一些(xie)質(zhi)量參數(shu),它將在執行功能時(shi)得到尊重(zhong)。這些(xie)參數(shu)可(ke)以(yi)包括延遲、錯(cuo)誤率、并發(fa)性等(deng)。在此SLA之外,調用它的(de)組(zu)(zu)件會假定它已(yi)失敗(bai)并需(xu)要自行采取適當的(de)措(cuo)施。如(ru)果組(zu)(zu)件本身(shen)檢測到它無法維護其SLA,它可(ke)以(yi)先(xian)發(fa)制人地告(gao)訴(su)其調用者暫停并稍后再來調用。為了保持整體系統健康,最(zui)好是(shi)(shi)快速失敗(bai)而不(bu)是(shi)(shi)在違反(fan)SLA的(de)情況下(xia)成功。兩個(ge)組(zu)(zu)件(一個(ge)被喚(huan)起(qi)(qi)的(de)和一個(ge)喚(huan)起(qi)(qi)的(de))都必(bi)須為此設置機制。

(1)保護調用者

A、超(chao)時(shi):如果(guo)被(bei)調用(yong)的(de)組件(jian)在其(qi)SLA內沒(mei)有響(xiang)應,調用(yong)者(zhe)必須超(chao)時(shi)(放棄)并改用(yong)一些回退機制(即使它(ta)拋出錯(cuo)誤)來維護自己的(de)SLA并防止一連(lian)串(chuan)的(de)SLA違規。

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

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

(2)保護被調用

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

B、背壓:如果一個組件檢測到自己承(cheng)受過多的負載(zai)并且即將違反(fan)其SLA,它可以搶先開(kai)始丟棄新請求,直到其性(xing)能(neng)得到控制(zhi)。這比接受它知道它不能(neng)在(zai)SLA內提供服(fu)務或沒(mei)有完全崩(beng)潰風險(xian)的請求要好得多。

3、在系統中建立緩沖區

(1)異步通信

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

(2)彈性配置

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

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