對於分佈式系統來講,出現網絡故障是所不免的。所以,如何提高系統面對問題的處理能力也就是系統的彈性能力是相當重要的。網絡
提高系統彈性能力的經常使用的技術手段包括:超時和重試。app
當調用上游服務的時候,若是上游服務一直沒有響應,那麼就能夠設置一個最大等待時間,若是超過來這個最大時間,就直接返回了,再也不繼續等待上游服務(快速失敗),其目的是控制故障的範圍,避免故障擴散(若是一直等待故障服務的返回,就會把本身的服務拖垮,這樣就能夠把故障控制在必定範圍以內)。分佈式
實現:當reviews調用故障ratings服務時,reviews快速失敗性能
步驟:ui
`kubectl apply -f virtual-service-reviews-v3.yaml
`
此時頁面只會顯示帶紅心的評分spa
`kubectl apply -f delay-fault-injection-rating-v1.yaml
`
3d
應用配置後,從新訪問productpage頁面,可發現有2s左右延遲code
`kubectl apply -f virtual-service-reviews-v3-timeout-1s.yaml
`blog
從新刷新productpage頁面,因爲reviews調用ratings有2s延時的接口,而reviews服務的超時時間只有1s,所以頁面顯示服務不可用,實現了快速失敗。接口
重試是不斷的去嘗試從新調用請求失敗的服務,它一般解決的是因爲網絡問題致使通訊失敗的問題,經過重試能夠提升系統的穩定性。
實現:當ratings服務出現故障時,自動重試3次
步驟:
配置ratings服務3次重試
kubectl apply -f virtual-service-ratings-v1-retry.yaml