通常,分佈式系統須要支持如下特性:git
下面分別討論。github
一旦受權,能夠訪問環境中的任何資源。web
資源:包括硬件(e.g. printer, scanner, camera)、軟件(服務)、數據(file, database, web page) 。服務器
如資源管理器控制資源的訪問:網絡
新共享資源添加並被各類客戶程序使用的(難易)程度。併發
如支持異構資源的添加和使用:框架
分佈系統中的各個組成部分能夠在併發的過程當中被執行。分佈式
如:性能
資源定義同上。code
主要強調「伸」;偶爾也強調「縮」。
在資源和用戶數較大增加的狀況下,系統性能仍能維持甚至提升。
一般表現爲:
如:
錯誤發生時,系統可以繼續工做的能力。
基於這樣一個假設:硬件、軟件、網絡的錯誤不可避免。
要容錯,就要先知道有哪些錯誤(故障),再針對故障類型一一解決。
分佈式系統中的典型故障以下:
故障類型 | 說明 |
---|---|
崩潰性故障 | 服務器停機,可是在停機以前工做正常 |
遺漏性故障 | 服務期不能響應到來的消息。包括不能接受、不能發送 |
定時故障 | 服務器的響應在指定時間間隔以外 |
響應故障 | 服務期的響應不正確。包括響應的值錯誤、偏離了正確的控制流 |
隨意性故障 | 服務器可能在隨意的時間產生隨意的響應 |
其中,隨意性故障是最嚴重的故障,也被稱爲拜占庭故障
。當發生故障時,服務器可能產生它歷來沒有產生過的輸出,可是又不能檢測出錯誤。更壞的狀況是,發生故障的服務器惡意的與其餘服務器共同工做來產生惡意的錯誤結果。
若是系統是容錯的,那麼它能作的最好的事情就是對其餘進程隱藏故障的發生。因爲故障沒法避免,咱們只能依靠冗餘來掩蓋故障,包括:
部分書籍將物理冗餘與軟件冗餘分開,本質上沒法徹底分開,由於軟件冗餘可能在部署在單機或多機上。這裏將兩者統一爲物理冗餘。
則針對各故障,可取的主要解決方案爲:
網絡環境對於用戶和應用程序而言,應該是一個總體,而不是一個互相協做的簡單的構件集合。包括多項性質:
位置透明性、遷移透明性、重定位透明性是對命名系統的基本要求。
本文連接:分佈式系統的基本特性
做者:猴子007
出處:monkeysayhi.github.io
本文基於 知識共享署名-相同方式共享 4.0 國際許可協議發佈,歡迎轉載,演繹或用於商業目的,可是必須保留本文的署名及連接。