芒果视频下载

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

分布式系統面臨的挑戰有哪些 分布式系統帶來的問題及解答

本文章由注冊用戶 知無涯 上傳提供 2024-11-30 評論 0
摘要:分布式系統建立在網絡上,而網絡是不可靠的,可能的網絡問題包括:網絡分割、延時、丟包、亂序等,這些會給分布式系統帶來挑戰,除此之外,異構的機器與網絡、普遍的節點故障也是分布式系統面臨的主要挑戰之一。分布式系統工作過程中,還會帶來一些問題,比如如何找到所需的服務、如何避免雪崩、如何對系統進行監控等。下面一起來看看分布式系統面臨的挑戰有哪些以及分布式系統帶來的問題及解答吧。

一、分布式系統面臨的挑戰有哪些

分布式系統需要(yao)大量機器協(xie)作,面臨諸多的(de)(de)挑(tiao)(tiao)戰,其中主要(yao)的(de)(de)挑(tiao)(tiao)戰有:

1、異構的機器與網絡

分布式(shi)系統中的機器,配置不一(yi)樣,其(qi)上運行的服務也可能由不同的語言、架構實現,因(yin)此處理(li)能力(li)也不一(yi)樣;節點間(jian)通過網(wang)絡連接,而(er)不同網(wang)絡運營商提供的網(wang)絡的帶寬、延時、丟(diu)包率又不一(yi)樣。怎么保證大家齊頭并進,共(gong)同完(wan)成(cheng)目標(biao),這(zhe)是個(ge)不小(xiao)的挑戰。

2、普遍的節點故障

雖然單個節(jie)(jie)點(dian)的故障(zhang)概率較低,但節(jie)(jie)點(dian)數目達(da)到一定規模,出故障(zhang)的概率就(jiu)變高了。分布式系(xi)統需要(yao)保(bao)證故障(zhang)發生的時(shi)候,系(xi)統仍然是可用的,這就(jiu)需要(yao)監控節(jie)(jie)點(dian)的狀態,在節(jie)(jie)點(dian)故障(zhang)的情(qing)況下將該節(jie)(jie)點(dian)負責的計(ji)算、存(cun)儲任(ren)務轉移到其他節(jie)(jie)點(dian)。

3、不可靠的網絡

節(jie)(jie)(jie)點(dian)間通(tong)過網(wang)絡(luo)通(tong)信,而(er)網(wang)絡(luo)是不可靠的。可能(neng)的網(wang)絡(luo)問題(ti)包括:網(wang)絡(luo)分割、延(yan)時(shi)、丟包、亂序。相比單機過程調用,網(wang)絡(luo)通(tong)信最讓(rang)人(ren)頭疼的是超時(shi):節(jie)(jie)(jie)點(dian)A向(xiang)節(jie)(jie)(jie)點(dian)B發出請求(qiu),在(zai)約定(ding)的時(shi)間內沒(mei)有收到節(jie)(jie)(jie)點(dian)B的響應,那(nei)么B是否處理了請求(qiu),這個是不確定(ding)的,這個不確定(ding)會帶來諸(zhu)多問題(ti),最簡單的,是否要重試請求(qiu),節(jie)(jie)(jie)點(dian)B會不會多次(ci)處理同一個請求(qiu)。

總而(er)言之,分布式的(de)(de)挑戰來自不確定(ding)性(xing),不確定(ding)計算機什(shen)么時候(hou)crash、斷電,不確定(ding)磁盤什(shen)么時候(hou)損壞,不確定(ding)每次網(wang)絡(luo)通信要延遲多久,也(ye)不確定(ding)通信對端是否處理(li)了(le)發送的(de)(de)消息。而(er)分布式的(de)(de)規模放大了(le)這個不確定(ding)性(xing),不確定(ding)性(xing)是令人討厭的(de)(de),所(suo)以有諸(zhu)多的(de)(de)分布式理(li)論(lun)、協(xie)議(yi)來保證(zheng)在這種不確定(ding)性(xing)的(de)(de)情況下,系統(tong)還能繼續正(zheng)常(chang)工(gong)作。

二、分布式系統帶來的問題及解答

1、如何找到所需的服務?——服務發現組件

問(wen)題描述:線(xian)上生產環境中,尤其容器(qi)部署情況下服務實例地址(zhi)(服務器(qi)端口)是動態分配(pei)的,服務調用者無(wu)法提前獲取服務實例地址(zhi)和端口。

解決方案:在服(fu)務(wu)運行時,通過服(fu)務(wu)發現組(zu)件解析服(fu)務(wu)名來獲取服(fu)務(wu)實例地(di)址和端口(kou)。

2、如何找到實例?——請求分發的策略

問題描(miao)述(shu):找(zhao)到服務器后(hou),還應該確定將當前(qian)請求發往服務器的哪(na)一個實例。

解決方案:

(1)如果同一個(ge)服務(wu)的實例都是完全對(dui)等的(無狀(zhuang)態(tai)),那么(me)按負載均衡策(ce)略來處理就足夠(隨機(ji)、輪詢、權重、hash、一致性hash、fair等各種策(ce)略)。

(2)如果同一(yi)個(ge)服(fu)(fu)務的(de)(de)實(shi)例(li)不是對(dui)等(deng)的(de)(de)(有狀態),那么需要通過(guo)路由服(fu)(fu)務(元數(shu)據服(fu)(fu)務等(deng))先(xian)確(que)定當前要訪問的(de)(de)請求數(shu)據在哪一(yi)個(ge)實(shi)例(li)上,然(ran)后再進行(xing)訪問。

3、如何避免雪崩?

問題描述:一個故(gu)障(zhang)由于正(zheng)反饋(kui)不(bu)斷被擴大,從(cong)而導致整個系(xi)統(tong)故(gu)障(zhang)

解決方案:

(1)【快速(su)失(shi)敗】和【降級機制】:熔斷、降級、限流等,通(tong)過快速(su)減少系統負(fu)載(zai)來避免雪崩(beng)的發生。

(2)【彈性擴(kuo)容機制】,通過(guo)快(kuai)速增加系統的服務能力(li)來避免雪崩的發生。

4、如何對系統進行監控?

問題描述:對于一個分布式系統,如果(guo)我們不能很(hen)清(qing)楚地了解內部的狀態,那么高(gao)可用是(shi)沒有辦法完全保障的。

解決方案:監控系統的各層

(1)【硬件(jian)層(ceng)面】:服(fu)務器溫(wen)度、磁盤RAID陣列等。

(2)【系(xi)統(tong)層(ceng)面(mian)】:存活(huo)狀態、CPU、RAM、load負載。

(3)【應用層】:mysql、Nginx、Django、LVS、HAProxy。

(4)【業務層面(mian)】:PV、UV、訂單。

5、分布式存儲如何做數據切片?

問題描述:既然要實現(xian)分布式數(shu)據庫(ku),那么應該(gai)如(ru)何將數(shu)據進行(xing)切(qie)片?

解決(jue)方(fang)案:Hash、Consistent Hash和Range Based分片策(ce)略。

6、如何設置冗余?如何復制數據?

問題描述:分布式存(cun)儲的(de)高可用(yong)性需(xu)要(yao)冗(rong)余來保證,那么如何做冗(rong)余?如何對數(shu)據(ju)進行復制、更新時(shi)保證兩(liang)份數(shu)據(ju)的(de)一致(zhi)性?

解決方案:

(1)【中心化方案】:主從復制、一(yi)致性協議(Raft和Paxos)。

(2)【去中心化(hua)的(de)方案】:Quorum、Vector Clock。

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