實作復原應用程式
您的微服務和雲端應用程式都必須容許終究一定會發生的部分失敗。 您必須將應用程式設計成可從那些部分失敗中復原。
復原是從失敗中復原並繼續運作的能力。 這不是為了避免失敗,而是要接受失敗將會發生的事實,並以避免停機或資料遺失的方式予以回應。 復原的目標是在失敗後將應用程式返回完全運作的狀態。
設計和部署微服務應用程式的挑戰性就已經很高。 但您還必須確保應用程式在必然會發生某些失敗的環境中繼續執行。 因此,您的應用程式應該能夠復原。 它應該設計成能夠回應部分失敗,如網路中斷,或是雲端中的節點或 VM 沒有回應。 即使是微服務 (容器) 移至叢集中的其他節點,也會導致應用程式內發生間歇且短暫性失敗。
您應用程式的許多個別元件也應該納入狀況監控功能。 您可以遵循本章中的指引,建立即使在複雜的雲端式部署中發生暫時性停機或一般延遲的情況下也能順暢運作的應用程式。
重要
eShopOnContainer 是使用 Polly 程式庫,使用具型別的用戶端實作復原能力,直到版本 3.0.0 為止。
從 3.0.0 版本開始,HTTP 呼叫復原功能會使用 Linkerd 網格來實作,其會以透明且可設定的方式處理 Kubernetes 叢集內的重試,而不需要在程式碼中處理這些疑慮。
Polly 程式庫仍可用來為資料庫連線新增復原能力,特別是在啟動服務時。
警告
本節中的所有程式碼範例和影像在使用 Linkerd 之前都有效,而且不會更新以反映目前的實際程式碼。 因此,在本節的內容中很合理。