George Coulouris 等:distributed Systems——concepts And Design@2012 (第5版)
分散式系統的主要論點與核心概念
分散式系統的核心在於協調透過網路連接的電腦上的元件,這些元件只能透過訊息傳遞進行通訊與合作。這種基本特性帶來了分散式系統獨有的挑戰:並行性(元件同時執行)、缺乏全域時鐘(無法精確判斷事件的絕對或相對時間)以及元件獨立失敗(一個部分的失敗不一定立即被其他部分知曉)。分散式系統的主要驅動力是資源共享,包括硬體(如印表機、磁碟)、軟體(如檔案、資料庫、Web 頁面)和資料,這些資源通常由伺服器管理並由客戶端存取,或封裝為物件供其他物件呼叫。
設計和建構分散式系統需要克服多方面的挑戰,這些挑戰構成了分散式系統研究和實踐的核心主要論點:
- 異質性(Heterogeneity): 分散式系統由不同廠商生產的硬體、作業系統、程式語言和網路組成。必須透過協定的標準化以及中介軟體層來屏蔽這些差異,實現互通性。
- 開放性(Openness): 分散式系統應是開放的,允許新增或替換元件,並提供新的資源共享服務。這要求系統關鍵介面被公開定義和發布。
- 安全性(Security): 共享的資源及其通訊容易受到未經授權的存取和惡意行為(如竊聽、偽裝、篡改、重放、阻斷服務)的威脅。需要加密、認證、授權等技術來保護資源的安全,但也面臨行動程式碼帶來的額外風險。
- 可擴展性(Scalability): 系統應能有效率地應對使用者數量和資源數量的顯著增長,同時控制資源成本和效能損失。這要求採用分散式、去中心化以及適當複製、快取、分區等技術來避免效能瓶頸。
- 失敗處理(Failure Handling): 分散式系統中的元件可能獨立失敗,且失敗可能是部分的。系統必須能偵測(儘管不總是可行)、遮罩、容忍、以及從失敗中恢復。冗餘是提高容錯性的關鍵技術。
- 並行性(Concurrency): 多個客戶端可能同時存取共享資源,需要適當的同步機制來確保資源狀態的一致性。
- 透明性(Transparency): 理想的分散式系統應對使用者和應用程式隱藏元件的分離性,使其感知為一個整體。這包括隱藏存取、位置、並行、複製、失敗、遷移、效能和擴展的細節。
- 服務品質(Quality of Service, QoS): 除了基本功能外,系統還需要提供關於效能(延遲、吞吐量、抖動)、可靠性和安全性的保證,特別是對於連續媒體(如音訊、視訊)的時間敏感性要求。
為了解決這些挑戰,分散式系統設計採用了多種模型和技術:
- 系統模型: 物理模型描述硬體組成和連接;架構模型描述元件的角色和關係(如主從式、對等式、多層式);基礎模型則抽象描述交互、失敗和安全等基本屬性。
- 通訊基礎: 建立在網路協定之上(如 TCP/IP),提供處理程序間通訊(如 Socket)、遠端呼叫(如 RPC, RMI)或間接通訊(如群組通訊、發布/訂閱、訊息佇列、Tuple 空間、分散式共享記憶體)等通訊範式。中介軟體在其中扮演關鍵角色,屏蔽底層異質性並提供高層次抽象。
- 資料與服務: 實現分散式檔案系統、名稱服務(將名稱映射到屬性,如 DNS)、目錄服務(根據屬性尋找)、以及以服務為中心的架構(如 Web 服務),這些都需要考慮名稱解析、資料分區、複製和安全等問題。
- 時間與狀態管理: 由於缺乏全域時鐘,需要時鐘同步(物理時鐘同步)或邏輯時鐘(事件排序)來處理時間相關問題。獲取系統一致性全域狀態的「快照」是理解和偵錯系統狀態的關鍵技術。
- 協調與協定: 多處理程序需要協調其行動(如分散式互斥)或對共享值達成一致(如選舉、共識),這些都需要精巧的演算法來處理並行和潛在的失敗。
- 事務與並行控制: 事務提供原子性保證,確保操作序列在並行和失敗面前的一致性。需要並行控制方法(如鎖定、樂觀控制、時間戳排序)來確保事務的隔離性,並處理分散式環境下的事務恢復和死鎖問題。
- 複製技術: 實現數據複製以提升效能、可用性和容錯性。這需要處理副本間的一致性問題,並考慮不同的複製策略(如主動、被動)及在網路分割下的操作。
- 新興領域: 行動與普及運算帶來了設備資源限制、連線不穩定、上下文感知等新挑戰,需要適應性、輕量級通訊和物理世界整合的解決方案。分散式多媒體系統則需要處理時間敏感數據、QoS 管理和流適應等問題。
最終,成功的、大規模的分散式系統(如 Google)將這些核心挑戰、模型、通訊範式、服務和演算法整合到一個連貫的整體架構中,以滿足特定的應用需求並在現實世界的複雜環境中有效運行。
comments
comments for this post are closed