分布式系統(tǒng)主要有5個點
可擴展性,可用性,可靠性,效率,可維護性。
可擴展性
可擴展性是系統(tǒng),流程或網(wǎng)絡(luò)增長和管理增長需求的能力。任何可以不斷發(fā)展以支持不斷增長的工作量的分布式系統(tǒng)都被認為是可擴展的。
由于諸如增加的數(shù)據(jù)量或增加的工作量(例如,交易數(shù)量)的許多原因,系統(tǒng)可能必須按比例縮放??缮炜s系統(tǒng)希望實現(xiàn)這種擴展而不會降低性能。
通常,由于管理或環(huán)境成本,雖然設(shè)計(或聲稱)可擴展,但系統(tǒng)的性能隨系統(tǒng)規(guī)模而下降。例如,網(wǎng)絡(luò)速度可能會變慢,因為機器往往相距很遠。更一般地說,某些任務(wù)可能由于其固有的原子性質(zhì)或者由于系統(tǒng)設(shè)計中的某些缺陷而無法分發(fā)。在某些時候,這樣的任務(wù)會限制通過分發(fā)獲得的加速??蓴U展的體系結(jié)構(gòu)避免了這種情況,并嘗試均勻地平衡所有參與節(jié)點上的負載。
水平與垂直擴展:水平擴展意味著可以通過向資源池中添加更多服務(wù)器來擴展,而垂直擴展則意味著您可以通過向現(xiàn)有服務(wù)器添加更多功率(CPU,RAM,存儲等)來擴展。
通過水平擴展,通過在現(xiàn)有池中添加更多計算機,可以更容易地動態(tài)擴展;垂直擴展通常僅限于單個服務(wù)器的容量,超出該容量的擴展通常涉及停機時間并且具有上限。
水平擴展的好例子是Cassandra和MongoDB,因為它們都提供了一種通過添加更多機器來滿足不斷增長的需求而水平擴展的簡單方法。類似地,垂直縮放的一個很好的例子是MySQL,因為它允許通過從小型機器切換到更大型機器來實現(xiàn)垂直擴展的簡單方法。但是,此過程通常涉及停機時間。

可靠性
根據(jù)定義,可靠性是系統(tǒng)在給定時期內(nèi)失敗的概率。簡單來說,如果分布式系統(tǒng)即使在其一個或多個軟件或硬件組件發(fā)生故障時仍能繼續(xù)提供服務(wù),也被認為是可靠的??煽啃源砣魏畏植际较到y(tǒng)的主要特征之一,因為在這樣的系統(tǒng)中,任何故障機器總是可以被另一個健康的機器替換,從而確保完成所請求的任務(wù)。
以大型電子商務(wù)商店(如亞馬遜)為例,其中一個主要要求是,由于運行該交易的機器發(fā)生故障,任何用戶交易都不應被取消。例如,如果用戶已將商品添加到他們的購物車中,則系統(tǒng)預計不會丟失該商品??煽康姆植际较到y(tǒng)通過軟件組件和數(shù)據(jù)的冗余來實現(xiàn)這一點。如果攜帶用戶購物車的服務(wù)器出現(xiàn)故障,則具有購物車完全副本的另一臺服務(wù)器應該替換它。
顯然,冗余具有成本,并且可靠的系統(tǒng)必須通過消除每個單點故障來支付服務(wù)以實現(xiàn)服務(wù)的這種彈性。
可用性
根據(jù)定義,可用性是系統(tǒng)在特定時間段內(nèi)保持運行以執(zhí)行其所需功能的時間。它是系統(tǒng),服務(wù)或機器在正常條件下保持運行的時間百分比的簡單度量。可以說一架飛機每月可以飛行數(shù)小時而沒有太多的停機時間,可以說具有很高的可用性??捎眯钥紤]了可維護性,維修時間,備件可用性和其他物流考慮因素。如果飛機停機維修,則認為在此期間無法使用。
考慮到可能發(fā)生的各種可能的現(xiàn)實條件,可靠性隨著時間的推移而變得可用。能夠安全地通過任何可能的天氣的飛機比可能存在條件的飛機更可靠。
可靠性與可用性
如果系統(tǒng)可靠,則可用。但是,如果可用,則不一定可靠。換句話說,高可靠性有助于實現(xiàn)高可用性,但即使使用不可靠的產(chǎn)品,也可以通過最小化維修時間并確保備件在需要時始終可用而實現(xiàn)高可用性。讓我們以網(wǎng)上零售商店為例,該商店在推出后的頭兩年內(nèi)有99.99%的可用性。但是,該系統(tǒng)在沒有任何信息安全測試的情況下啟動??蛻魧ο到y(tǒng)感到滿意,但他們沒有意識到它不太可靠,因為它容易受到可能的風險。在第三年,系統(tǒng)遇到一系列信息安全事件,這些事件突然導致長時間的極低可用性。這會給客戶帶來聲譽和財務(wù)損失。
效率
為了理解如何衡量分布式系統(tǒng)的效率,讓我們假設(shè)一個以分布式方式運行的操作,并提供一組項目作為結(jié)果。其效率的兩個標準度量是
第一項 響應時間(或等待時間),拿一個資源要等多久
第二項 吞吐量(或帶寬)。在一個時間段里有多少資源可以被發(fā)出。
這兩項措施對應于以下單位成本:
無論消息大小如何,系統(tǒng)節(jié)點全局發(fā)送的消息數(shù)。
表示數(shù)據(jù)交換量的消息大小。
分布式數(shù)據(jù)結(jié)構(gòu)支持的操作的復雜性(例如,搜索分布式索引中的特定KEY)可以表征為這些成本單元之一的函數(shù)。一般而言,根據(jù)“消息數(shù)量”對分布式結(jié)構(gòu)的分析過于簡單化。它忽略了許多方面的影響,包括網(wǎng)絡(luò)拓撲,網(wǎng)絡(luò)負載及其變化,數(shù)據(jù)處理和路由中涉及的軟件和硬件組件的可能異構(gòu)性等。但是,開發(fā)精確的成本模型是相當困難的。這將準確地考慮所有這些表現(xiàn)因素;因此,我們要對粗略但穩(wěn)健的系統(tǒng)行為進行估算。
可維護性
設(shè)計分布式系統(tǒng)時另一個重要的考慮因素是操作和維護是多么容易。 可維護性或可管理性是系統(tǒng)可以修復或維護的簡單性和速度; 如果修復故障系統(tǒng)的時間增加,則可用性將降低。 可管理性需要考慮的事項是在出現(xiàn)問題時容易診斷和理解問題,是否易于進行更新或修改,以及系統(tǒng)運行的簡單程度(即,它是否經(jīng)常運行而沒有失敗或異常?)。
及早發(fā)現(xiàn)故障可以減少或避免系統(tǒng)停機。 例如,當系統(tǒng)出現(xiàn)系統(tǒng)故障時,某些企業(yè)系統(tǒng)可以自動呼叫服務(wù)中心(無需人工干預)。