微服务之前的调用的超时设置是必要的,我们不能傻傻的信任下游服务,当某个下游服务出现超时情况时,会传递到上游链路,进而影响到所有服务。
例如:当Ratings服务出现问题时,首先影响到Reviews服务,进而影响到ProductPage服务:
本节我们将基于上一节Details的模拟故障注入设置,在productpage上加入超时3s的限制:
更新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设置:
应用更新kubectl apply -f bookinfo-gateway.yaml
此时访问页面如果遇到下游details
服务超时,在页面会显示: