本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

架構概觀

彈性分析架構是透過識別工作負載所需的彈性特性而開發的。所需的屬性是您希望對系統成為真實的事物。恢復性通常是根據可用性來衡量,因此五個屬性是高可用性分散式系統的特性:備援、足夠的容量、及時輸出、正確的輸出以及故障隔離。這些屬性如下圖所示。

所需彈性特性的關係
  • 冗餘— 容錯是透過可消除單點故障 (SPOFs) 的冗餘來實現。備援能夠從工作負載中的備用元件到整個應用程式堆疊的完整複本。當您考慮應用程式的備援時,請務必考慮您使用的基礎結構、資料存放區和相依性所提供的備援層級。例如,Amazon DynamoDB 和 Amazon 簡單儲存服務 (Amazon S3) 透過在一個區域中跨多個可用區域複寫資料來提供備援,以及AWS Lambda在多個可用區域中的多個工作者節點上執行您的函數。對於您使用的每項服務,請考慮服務提供的內容以及您需要設計的內容。

  • 足夠容量— 您的工作負載需要足夠的資源才能正常運作。資源包括記憶體、CPU 週期、執行緒、儲存體、輸送量、服務配額和許多其他資源。

  • 及時輸出— 當客戶使用您的工作負載時,他們希望它能夠在合理的時間內執行其預期功能。除非服務針對延遲提供服務等級協定 (SLA),否則他們的期望通常基於實證證據 — 也就是他們自己的經驗。這個平均客戶體驗通常被認為是系統中位數 (P50) 延遲。如果您的工作負載所花費的時間超過預期,此延遲可能會影響客戶的體驗。

  • 正確的輸出— 需要正確輸出工作負載軟體,才能提供其預期的功能。不正確或不完整的結果可能比根本沒有回應更糟糕。

  • 故障隔離— 故障隔離會在發生故障時,將影響範圍限制為預期的故障容器。它可確保工作負載的特定元件一起失敗,同時防止故障串聯到其他非預期的元件。它還有助於限制對工作負載客戶的影響範圍。故障隔離與前四個屬性有些不同,因為它接受已經發生故障但應該包含。您可以在基礎結構、相依性和軟體功能中建立故障隔離。

違反所需的屬性時,可能會導致工作負載無法使用或被認為無法使用。基於這些所需的彈性特性以及我們與許多人合作的經驗AWS客戶,我們已經確定了五個常見的故障類別:單點故障,過度負載,過度延遲,錯誤配置和錯誤,以及共享的命運,我們將其縮寫為 LIKE。這些提供了一致的方法來分類潛在的失敗模式,並在下表中說明。

失敗類別

違反

定義

單點故障 (SPOF)

備援

單一元件的故障會因為元件缺乏備援而中斷系統。

負載過大

足夠容量

過度需求或流量過度消耗資源會導致資源無法執行預期的功能。這可能包括達到限制和配額,這會導致限制和拒絕請求。

過度延遲

及時輸出

系統處理或網路流量延遲超過預期時間、服務層級目標 (SLO) 或服務層級協定 (SLA)。

配置錯誤和錯誤

正確的輸出

軟件錯誤或系統配置錯誤導致輸出不正確。

共同命運

故障隔離

先前任何失敗類別所造成的錯誤會跨越預期的故障隔離界限,並串聯至系統的其他部分或其他客戶。