您的微服務和雲端式應用程式必須接受不可避免的部分失敗。 您必須將應用程式設計為能夠抵抗部分失敗。
復原是從失敗中復原並繼續運作的能力。 這與避免失敗有關,而是接受失敗會發生的事實,並以避免停機或數據遺失的方式回應失敗。 復原的目標是在失敗后,將應用程式傳回完全正常運作的狀態。
設計及部署微服務型應用程式具有挑戰性。 但是,您也需要讓應用程式在某種失敗不可避免的環境中執行。 因此,您的應用程式應該具有復原性。 其設計目的是要應付部分失敗,例如網路中斷或節點或 VM 在雲端中當機。 即使是將微服務(容器)移至叢集內的不同節點,也可能會導致應用程式內間歇性短暫失敗。
應用程式的許多個別元件也應該納入健康情況監視功能。 依照本章中的指導方針,您可以建立應用程式,即使暫時性停機或複雜且雲端式部署中發生的正常小故障,依然能順利運作。
這很重要
eShopOnContainer 一直使用 Polly 函式庫 和 類型化客戶端 實現韌性,直到 3.0.0 版本發布。 從 3.0.0 版開始,HTTP 呼叫復原是使用 Linkerd 網格實作的,此網格會以透明且可設定的方式處理 Kubernetes 叢集中的重試,而不需要在程式代碼中處理這些考慮。
Polly 函式庫仍用於增加資料庫連線的韌性,特別是在啟動服務時。
警告
本節中的所有程式代碼範例和影像在使用 Linkerd 之前都是有效的,而且不會更新以反映目前的實際程序代碼。 因此,這在本節的內容中很有意義。