IT運維 | 分布式系統介紹
2020-05-10 18:05 作者:admin
IT運維 | 分布式系統介紹
隨著現在應用系統越來越龐大,數據量越來越大。單個運算系統已無法滿足日益增長的計算量了。從而引入了分布式系統概念。作為
IT運維來講,復雜的分布式系統有很多抽象概念不好弄明白,今天就跟大家聊聊這個話題。
分布式系統是由一組通過網絡進行通信、為了完成共同的任務而協調工作的計算機節點組成的系統。分布式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、存儲任務。其目的是利用更多的機器,處理更多的數據。首先需要明確的是,只有當單個節點的處理能力無法滿足日益增長的計算、存儲任務的時候,且硬件的提升(加內存、加磁盤、使用更好的CPU)高昂到得不償失的時候,應用程序也不能進一步優化的時候,我們才需要考慮分布式系統。因為,分布式系統要解決的問題本身就是和單機系統一樣的,而由于分布式系統多節點、通過網絡通信的拓撲結構,會引入很多單機系統沒有的問題,為了解決這些問題又會引入更多的機制、協議,帶來更多的問題。在很多文章中,主要講分布式系統分為分布式計算(computation)與分布式存儲(storage)。計算與存儲是相輔相成的,計算需要數據,要么來自實時數據(流數據),要么來自存儲的數據;而計算的結果也是需要存儲的。在操作系統中,對計算與存儲有非常詳盡的討論,分布式系統只不過將這些理論推廣到多個節點罷了。那么分布式系統怎么將任務分發到這些計算機節點呢,很簡單的思想,分而治之,即分片(partition
)。對于計算,那么就是對計算任務進行切換,每個節點算一些,最終匯總就行了,這就是MapReduce的思想;對于存儲,更好理解一下,每個節點存一部分數據就行了。當數據規模變大的時候,Partition是唯一的選擇,同時也會帶來一些好處:
(1)提升性能和并發,操作被分發到不同的分片,相互獨立
(2)提升系統的可用性,即使部分分片不能用,其他分片不會受到影響
理想的情況下,有分片就行了,但事實的情況卻不大理想。原因在于,分布式系統中有大量的節點,且通過網絡通信。單個節點的故障(進程crash、斷電、磁盤損壞)是個小概率事件,但整個系統的故障率會隨節點的增加而指數級增加,網絡通信也可能出現斷網、高延遲的情況。在這種一定會出現的“異常”情況下,分布式系統還是需要繼續穩定的對外提供服務,即需要較強的容錯性。最簡單的辦法,就是冗余或者復制集(Replication),即多個節點負責同一個任務,最為常見的就是分布式存儲中,多個節點復雜存儲同一份數據,以此增強可用性與可靠性。同時,Replication也會帶來性能的提升,比如數據的locality可以減少用戶的等待時間。
下面這張圖形象生動說明了Partition與Replication是如何協作的。
Partition和Replication是解決分布式系統問題的一記組合拳,很多具體的問題都可以用這個思路去解決。但這并不是銀彈,往往是為了解決一個問題,會引入更多的問題,比如為了可用性與可靠性保證,引用了冗余(復制集)。有了冗余,各個副本間的一致性問題就變得很頭疼,一致性在系統的角度和用戶的角度又有不同的等級劃分。如果要保證強一致性,那么會影響可用性與性能,在一些應用(比如電商、搜索)是難以接受的。如果是最終一致性,那么就需要處理數據沖突的情況。CAP、FLP這些理論告訴我們,在分布式系統中,沒有最佳的選擇,都是需要權衡,做出最合適的選擇。
分布式系統挑戰
分布式系統需要大量機器協作,面臨諸多的挑戰:
第一,異構的機器與網絡:
分布式系統中的機器,配置不一樣,其上運行的服務也可能由不同的語言、架構實現,因此處理能力也不一樣;節點間通過網絡連接,而不同網絡運營商提供的網絡的帶寬、延時、丟包率又不一樣。怎么保證大家齊頭并進,共同完成目標,這四個不小的挑戰。
第二,普遍的節點故障:
雖然單個節點的故障概率較低,但節點數目達到一定規模,出故障的概率就變高了。分布式系統需要保證故障發生的時候,系統仍然是可用的,這就需要監控節點的狀態,在節點故障的情況下將該節點負責的計算、存儲任務轉移到其他節點
第三,不可靠的網絡:
節點間通過網絡通信,而網絡是不可靠的。可能的網絡問題包括:網絡分割、延時、丟包、亂序。相比單機過程調用,網絡通信最讓人頭疼的是超時:節點A向節點B發出請求,在約定的時間內沒有收到節點B的響應,那么B是否處理了請求,這個是不確定的,這個不確定會帶來諸多問題,最簡單的,是否要重試請求,節點B會不會多次處理同一個請求。
總而言之,分布式的挑戰來自不確定性,不確定計算機什么時候crash、斷電,不確定磁盤什么時候損壞,不確定每次網絡通信要延遲多久,也不確定通信對端是否處理了發送的消息。而分布式的規模放大了這個不確定性,不確定性是令人討厭的,所以有諸多的分布式理論、協議來保證在這種不確定性的情況下,系統還能繼續正常工作。
以上內容由北京艾銻無限科技發展有限公司整理