芒果视频下载

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

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

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

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

健(jian)壯(zhuang)性是(shi)指(zhi)在異常和危險(xian)情況(kuang)下(xia)系統(tong)生存的能力,分布式系統(tong)一般具有健(jian)壯(zhuang)性,這是(shi)因為:

1、分(fen)(fen)布(bu)式(shi)系統的(de)(de)處(chu)理和控制(zhi)功能是分(fen)(fen)布(bu)的(de)(de),任(ren)何站(zhan)點發生的(de)(de)故障都(dou)不(bu)會(hui)給(gei)整個(ge)系統造(zao)成太大的(de)(de)影響。

2、當分布(bu)式系統中的(de)設備出(chu)現故障時,可以(yi)通過容(rong)錯技術實現系統的(de)重構,以(yi)保(bao)證系統的(de)正常運行。

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

分布(bu)式系統(tong)一般都具有健(jian)壯性,不過面對(dui)越(yue)來越(yue)普(pu)遍隨機故障,如(ru)果系統(tong)構建不當(dang)的(de)話,也會導致系統(tong)運(yun)行出現問題(ti),要構建健(jian)壯的(de)分布(bu)式系統(tong),主要注意以下幾點:

1、最小化組件間依賴

分(fen)布式系統的組(zu)件相互(hu)通(tong)信以獲(huo)取(qu)數(shu)據或功能。在這兩種情況下,我(wo)們都可以通(tong)過將數(shu)據/功能推(tui)送(song)到調(diao)用組(zu)件而不是遠程(cheng)訪問來減少連接需求。

構建(jian)大規模分布(bu)式(shi)系(xi)統(tong)迫使我們放棄(qi)標(biao)準(zhun)軟(ruan)件(jian)工程的(de)許多“最(zui)佳實(shi)踐”。要記住的(de)關鍵是,當我們采用(yong)分布(bu)式(shi)系(xi)統(tong)的(de)復雜性(xing)來實(shi)現可(ke)擴展性(xing)時,我們還需要盡可(ke)能地控制“分布(bu)”。

(1)重復數據

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

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

(2)非規范化數據

非規范化(hua)是(shi)在組件內發生的一(yi)種特殊形(xing)式的重復。如果我(wo)(wo)們(men)使用(yong)關系數據存儲,我(wo)(wo)們(men)可以(yi)通(tong)過在主實(shi)體中復制數據來降(jiang)低查看多個實(shi)體的成(cheng)本。本地化(hua)分(fen)散數據以(yi)獲得更好(hao)性(xing)能的原則也適用(yong)于此。

(3)庫

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

2、隔離錯誤

錯誤隔離(li)很重要,原因有兩個(ge)。一(yi)是(shi)個(ge)別錯誤在分布式系統中更(geng)常(chang)見(許多移動部件的(de)簡(jian)單功(gong)能(neng))。另一(yi)個(ge)是(shi),如(ru)果我們(men)不能(neng)防(fang)止整(zheng)個(ge)系統中的(de)聯鎖錯誤,那么(me)我們(men)首先就(jiu)失去了構建復(fu)雜(za)體的(de)理(li)由。

錯(cuo)(cuo)誤隔離(li)的(de)主要(yao)結構是(shi)SLA。每個(ge)組件(jian)都聲(sheng)明了(le)(le)一(yi)些(xie)質量參數,它(ta)(ta)將在(zai)執行(xing)功能(neng)時得到(dao)尊重。這些(xie)參數可(ke)以包括延遲、錯(cuo)(cuo)誤率、并(bing)(bing)(bing)發性等。在(zai)此(ci)SLA之外,調用它(ta)(ta)的(de)組件(jian)會假定它(ta)(ta)已失敗并(bing)(bing)(bing)需要(yao)自行(xing)采取適(shi)當(dang)的(de)措施。如果組件(jian)本(ben)身檢測到(dao)它(ta)(ta)無(wu)法維(wei)護其SLA,它(ta)(ta)可(ke)以先發制人地(di)告訴其調用者暫停并(bing)(bing)(bing)稍后再來調用。為(wei)了(le)(le)保持整體系統健康,最(zui)好(hao)是(shi)快(kuai)速(su)失敗而(er)不是(shi)在(zai)違反(fan)SLA的(de)情況下(xia)成(cheng)功。兩個(ge)組件(jian)(一(yi)個(ge)被喚(huan)起的(de)和一(yi)個(ge)喚(huan)起的(de))都必須為(wei)此(ci)設置機制。

(1)保護調用者

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

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

C、斷(duan)路(lu)器:如果(guo)對組(zu)件(jian)的(de)調(diao)用(yong)(yong)連續失(shi)敗,調(diao)用(yong)(yong)者可以(yi)通過“打開(kai)電路(lu)”切(qie)斷(duan)連接并停止調(diao)用(yong)(yong)一段時間。由于調(diao)用(yong)(yong)者已經有(you)一些錯(cuo)誤(wu)場(chang)景的(de)備份行為,這(zhe)節省了(le)調(diao)用(yong)(yong)者寶貴的(de)資(zi)源(yuan),這(zhe)些資(zi)源(yuan)本來會被浪(lang)費掉(diao)。停止調(diao)用(yong)(yong)還可以(yi)減(jian)少被調(diao)用(yong)(yong)組(zu)件(jian)的(de)負(fu)載(zai),并給它一些恢復的(de)喘息(xi)空間。

(2)保護被調用

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

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

3、在系統中建立緩沖區

(1)異步通信

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

(2)彈性配置

可(ke)擴展(zhan)性(xing)最(zui)(zui)終歸結為充分(fen)利(li)用可(ke)用硬(ying)件。但是,如(ru)果看(kan)到規模(mo)增長,讓系(xi)統(tong)緩口(kou)氣的一(yi)個簡單方(fang)法是分(fen)配(pei)更多硬(ying)件。雖然這僅在我們能夠承受的成本(ben)范(fan)圍(wei)內(nei)是可(ke)行的,但它為我們提供了抵御(yu)不(bu)可(ke)預測(ce)的負載變化(hua)的最(zui)(zui)后一(yi)道防線。

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