芒果视频

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

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

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

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

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

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

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

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

1、最小化組件間依賴

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

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

(1)重復數據

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

經常訪問(wen)但有一(yi)定(ding)規律性變化的(de)(de)數(shu)據(ju)可(ke)以通過定(ding)期緩存(cun)(cun)刷新來(lai)臨時(shi)緩存(cun)(cun)。更(geng)改(gai)頻(pin)率更(geng)低或(huo)從不更(geng)改(gai)的(de)(de)數(shu)據(ju)(例如客戶姓名(ming))可(ke)以直接存(cun)(cun)儲在(zai)我們的(de)(de)組件中。如果/當這些數(shu)據(ju)發生變化時(shi),我們可(ke)能(neng)需要(yao)做(zuo)一(yi)些額外的(de)(de)工作,但是(shi)這種(zhong)增加的(de)(de)小開銷通常是(shi)值得(de)的(de)(de),因為它(ta)可(ke)以提高彈性。

(2)非規范化數據

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

(3)庫

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

2、隔離錯誤

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

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

(1)保護調用者

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

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

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

(2)保護被調用

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

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

3、在系統中建立緩沖區

(1)異步通信

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

(2)彈性配置

可(ke)擴(kuo)展(zhan)性最終歸結為充分利用可(ke)用硬(ying)件。但是(shi)(shi)(shi),如果看到規模增長,讓系(xi)統緩口(kou)氣的一個簡單方法(fa)是(shi)(shi)(shi)分配更多硬(ying)件。雖然這(zhe)僅(jin)在我們(men)能夠承受的成本范(fan)圍內是(shi)(shi)(shi)可(ke)行的,但它(ta)為我們(men)提供了(le)抵御不可(ke)預(yu)測的負(fu)載變化的最后(hou)一道防線。

網站提醒和聲明
本站(zhan)為(wei)注(zhu)冊(ce)用戶提供(gong)信息存(cun)儲空間服(fu)務,非“MAIGOO編輯”、“MAIGOO榜單研(yan)究員(yuan)”、“MAIGOO文章編輯員(yuan)”上傳(chuan)(chuan)提供(gong)的文章/文字(zi)均是注(zhu)冊(ce)用戶自(zi)主發布上傳(chuan)(chuan),不(bu)代表本站(zhan)觀點(dian),版權(quan)歸(gui)原(yuan)作者所(suo)有,如有侵權(quan)、虛(xu)假信息、錯誤信息或任何問題,請及時(shi)聯系我們,我們將在(zai)第一時(shi)間刪除或更(geng)正(zheng)。 申請刪除>> 糾錯>> 投訴侵權>> 網頁(ye)上相關信息(xi)的(de)知識產(chan)權(quan)(quan)歸網站方所有(包括但不限于文字(zi)、圖片、圖表、著作權(quan)(quan)、商標權(quan)(quan)、為用戶提供的(de)商業信息(xi)等),非經許可不得抄襲或使用。
提交說(shuo)明: 快速提交發布>> 查看提交幫助>> 注冊登錄>>
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可點擊注冊>>,感謝您的理解及支持!
發表評論
最新評論
暫無評論
相關推薦
分布式管控系統有哪些類型 分布式系統有哪些主要特征
分布式管控系統按工作方式和位置不同,可分為客戶端-服務器(C/S)系統、對等網絡(P2P)系統和混合系統三大類,不管是哪種分布式系統,一般都會具有分布性、自治性、并行性、全局性四大特征。下面一起來文章中詳細了解一下分布式管控系統有哪些類型以及分布式系統有哪些主要特征吧。
【音響大全】音響的種類有哪些 音響哪種好 音響選購完全攻略
隨著高科技的迅速發展,影音娛樂設備更新換代的越來越快,音響的功能不僅僅只有擴音了,它還具有立體環繞、虛擬環繞等多種音效,市面上音響的功能和款式各式各樣,那么,音響的種類有哪些呢?哪款音響好呢?下面,小編為大家講解音響的優點、適用人群,并分享最全的音響選購攻略,讓大家享受身臨其境的真實感。
音箱 家電選購 ★★★
8289 108
如何判別分布式系統的優劣 判斷分布式管控系統優劣的七大標準
分布式系統在各行各業的應用越來越廣泛,市面上的分布式系統產品也比較多,主要可以通過看核心技術、看功能覆蓋、看畫面還原度、看大屏同步性、看坐席延時性、看集中管控、看運維管理七個方面來判斷其優劣。下面一起來看看如何判別分布式系統的優劣以及判斷分布式管控系統優劣的七大標準吧。
【家用音響推薦】家用音響哪種好 常用的五類家庭音響大盤點
隨著人們生活水平的提高,無論是電影還是電視都不僅僅是局限于視覺效果上的震撼了,在聽覺效果上也有了更大的追求,那么,家用音響有哪些呢?家用音響哪種好呢?下面,小編為大家全面盤點常用的五類家庭音響,讓大家可以享受到真正的聽覺盛宴!
音箱 家電選購 ★★★
7887 109
分布式系統和集中式系統的區別有哪些 分布式系統好還是集中式系統好
分布式系統和集中式系統在系統架構、數據存儲、任務分配、應用場景等方面存在一定的差異,相比較而言,集中式系統具有架構簡單、易于管理和控制的優點,適用于對數據一致性要求較高的場景;而分布式系統具有架構靈活、可擴展性強的優點,適用于對數據處理能力和并發訪問能力要求較高的場景。下面一起來看看分布式系統和集中式系統的區別有哪些以及分布式系統好還是集中式系統好吧。