可使用路由規則的httpReqTimeout字段指定http請求的超時。默認狀況下,超時爲15秒,但在此任務中,咱們將reviews
服務超時重寫爲1秒。然而,爲了看到它的效果,咱們還將在ratings
服務調用中引入人爲的2秒延遲。api
將請求路由到reviews
服務的v2 ,即調用ratings
服務的版本瀏覽器
cat <<EOF | istioctl replace -f - apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 EOF
爲ratings
服務調用添加2秒延遲:bash
cat <<EOF | istioctl replace -f - apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - fault: delay: percent: 100 fixedDelay: 2s route: - destination: host: ratings subset: v1 EOF
在瀏覽器中打開Bookinfo URL(http:// $ GATEWAY_URL / productpage)微服務
您應該看到Bookinfo應用程序正常工做(顯示評級星標),但每次刷新頁面時都會有2秒的延遲。spa
如今爲reviews
服務調用添加1秒的請求超時code
cat <<EOF | istioctl replace -f - apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 timeout: 1s EOF
刷新Bookinfo網頁路由
您如今應該看到它在1秒內返回(而不是2秒),但評論不可用。get
在此任務中,您使用Istio將對reviews
微服務的調用的請求超時設置爲1秒(而不是默認的15秒)。因爲服務在處理請求時reviews
隨後調用ratings
服務,所以您使用Istio在調用中注入了2秒的延遲ratings
,所以您將致使reviews
服務花費超過1秒的時間來完成,所以您能夠看到超時運行。產品
您發現Bookinfo產品頁面(調用reviews
服務填充頁面)而不是顯示評論顯示消息:對不起,本書目前沒法提供產品評論。這是它從reviews
服務接收超時錯誤的結果。io
若是你查看故障注入任務,你會發現productpage
微服務也有本身的應用程序級超時(3秒)來調用reviews
微服務。請注意,在此任務中,咱們使用Istio路由規則將超時設置爲1秒。若是您將超時設置爲大於3秒(例如,4秒)的超時,則超時將無效,由於二者中的限制性更強。更多細節能夠在這裏找到。
關於Istio中超時的另外一個注意事項是,除了在路由規則中覆蓋它們以外,就像在此任務中所作的那樣,若是應用程序添加了「x-envoy-upstream-」,它們也能夠在每一個請求的基礎上被覆蓋。 rq-timeout-ms「出站請求的標頭。在標頭中,超時以毫秒(而不是第二)單位指定。
https://istio.io/docs/tasks/traffic-management/request-routing/