对于分布式系统来讲,出现网络故障是所不免的。所以,如何提高系统面对问题的处理能力也就是系统的弹性能力是相当重要的。网络
提高系统弹性能力的经常使用的技术手段包括:超时和重试。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