Timeouts

微服务之前的调用的超时设置是必要的,我们不能傻傻的信任下游服务,当某个下游服务出现超时情况时,会传递到上游链路,进而影响到所有服务。

例如:当Ratings服务出现问题时,首先影响到Reviews服务,进而影响到ProductPage服务:

image-20220814093845335

本节我们将基于上一节Details的模拟故障注入设置,在productpage上加入超时3s的限制:

image-20220814093952488

测试

更新Details VirtualService, 将它的超时机率改为50%,超时时间改为5s:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  http:
  - fault:
      delay:
        percentage:
          value: 50.0
        fixedDelay: 5s
    route:
    - destination:
        host: details
        subset: v1

应用更新:kubectl apply -f details-fault-injection.yaml

/istio-1.14.3/samples/bookinfo/networking/bookinfo-gateway.yaml文件最后加上timeout设置:

image-20220814095405965

应用更新kubectl apply -f bookinfo-gateway.yaml


此时访问页面如果遇到下游details服务超时,在页面会显示:

image-20220814095441067