芒果视频下载

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

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

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

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

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

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

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

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

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

1、最小化組件間依賴

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

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

(1)重復數據

如果我(wo)們(men)經常從另(ling)一(yi)個組(zu)件訪(fang)問一(yi)些數據,我(wo)們(men)可(ke)以(yi)在我(wo)們(men)的組(zu)件中復(fu)制它(ta),而不必在運行時檢索它(ta)。這可(ke)以(yi)大大減少運行時依賴(lai)并幫(bang)助(zhu)改善(shan)我(wo)們(men)組(zu)件的延遲。

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

(2)非規范化數據

非(fei)規范化是在組(zu)件內發生的一(yi)種特(te)殊(shu)形(xing)式的重復。如(ru)果我們使用關(guan)系數據(ju)存儲,我們可(ke)以通過(guo)在主實體中復制數據(ju)來(lai)降(jiang)低查看(kan)多個實體的成(cheng)本(ben)。本(ben)地化分散數據(ju)以獲得(de)更好(hao)性能(neng)的原則也適用于此。

(3)庫

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

2、隔離錯誤

錯(cuo)誤(wu)隔離很重要,原因有兩個(ge)(ge)。一是個(ge)(ge)別錯(cuo)誤(wu)在分布式系統(tong)中更常(chang)見(許(xu)多(duo)移動部件的簡單(dan)功能(neng))。另一個(ge)(ge)是,如果(guo)我們不(bu)能(neng)防止(zhi)整個(ge)(ge)系統(tong)中的聯(lian)鎖錯(cuo)誤(wu),那么(me)我們首先就失(shi)去了構(gou)建復雜體的理由。

錯誤(wu)隔(ge)離的(de)主要結構是(shi)SLA。每個組(zu)(zu)件(jian)(jian)都聲明(ming)了一些質(zhi)量(liang)參數,它將(jiang)在(zai)執(zhi)行功(gong)能(neng)時得到尊重。這(zhe)些參數可以包括延(yan)遲、錯誤(wu)率(lv)、并發性等。在(zai)此(ci)SLA之(zhi)外(wai),調(diao)用它的(de)組(zu)(zu)件(jian)(jian)會假定它已失敗并需要自行采取適(shi)當的(de)措施。如(ru)果組(zu)(zu)件(jian)(jian)本身檢測(ce)到它無法(fa)維護其SLA,它可以先發制人地告(gao)訴(su)其調(diao)用者暫停并稍后(hou)再來調(diao)用。為了保持整體系統健康,最(zui)好是(shi)快(kuai)速失敗而不(bu)是(shi)在(zai)違反SLA的(de)情(qing)況(kuang)下成(cheng)功(gong)。兩個組(zu)(zu)件(jian)(jian)(一個被喚起的(de)和一個喚起的(de))都必須為此(ci)設置機制。

(1)保護調用者

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

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

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

(2)保護被調用

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

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

3、在系統中建立緩沖區

(1)異步通信

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

(2)彈性配置

可(ke)擴展性最(zui)(zui)終歸結為充分利用(yong)可(ke)用(yong)硬件(jian)。但(dan)是,如果(guo)看(kan)到規模增(zeng)長,讓系統緩口氣的一個簡單方法(fa)是分配更(geng)多(duo)硬件(jian)。雖然(ran)這僅在我們(men)能夠承(cheng)受的成本范圍內(nei)是可(ke)行(xing)的,但(dan)它(ta)為我們(men)提供了抵御(yu)不可(ke)預測的負載(zai)變化的最(zui)(zui)后(hou)一道防線。

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