Istio實現超時重試

對於分佈式系統來講,出現網絡故障是所不免的。所以,如何提高系統面對問題的處理能力也就是系統的彈性能力是相當重要的。網絡

提高系統彈性能力的經常使用的技術手段包括:超時和重試。app

超時

當調用上游服務的時候,若是上游服務一直沒有響應,那麼就能夠設置一個最大等待時間,若是超過來這個最大時間,就直接返回了,再也不繼續等待上游服務(快速失敗),其目的是控制故障的範圍,避免故障擴散(若是一直等待故障服務的返回,就會把本身的服務拖垮,這樣就能夠把故障控制在必定範圍以內)。
image分佈式

超時策略應用

實現:當reviews調用故障ratings服務時,reviews快速失敗性能

步驟:ui

  1. 將productpage請求打到reviews v3版本

`kubectl apply -f virtual-service-reviews-v3.yaml
`
image
此時頁面只會顯示帶紅心的評分
imagespa

  1. 給ratings服務注入2s延時,模擬故障

`kubectl apply -f delay-fault-injection-rating-v1.yaml
`
image3d

應用配置後,從新訪問productpage頁面,可發現有2s左右延遲code

  1. 給reviews服務配置1s超時

`kubectl apply -f virtual-service-reviews-v3-timeout-1s.yaml
`
imageblog

從新刷新productpage頁面,因爲reviews調用ratings有2s延時的接口,而reviews服務的超時時間只有1s,所以頁面顯示服務不可用,實現了快速失敗。
image接口

重試

重試是不斷的去嘗試從新調用請求失敗的服務,它一般解決的是因爲網絡問題致使通訊失敗的問題,經過重試能夠提升系統的穩定性。
image

重試策略應用

實現:當ratings服務出現故障時,自動重試3次

步驟:

配置ratings服務3次重試

kubectl apply -f virtual-service-ratings-v1-retry.yaml

image

相關文章
相關標籤/搜索