关于java:Istio实现超时重试

6次阅读

共计 784 个字符,预计需要花费 2 分钟才能阅读完成。

对于分布式系统来说,呈现网络故障是所不免的。因而,如何晋升零碎面对问题的解决能力也就是零碎的弹性能力是至关重要的。

晋升零碎弹性能力的罕用的技术手段包含:超时和重试。

超时

当调用上游服务的时候,如果上游服务始终没有响应,那么就能够设置一个最大等待时间,如果超过来这个最大工夫,就间接返回了,不再持续期待上游服务(疾速失败),其目标是管制故障的范畴,防止故障扩散(如果始终期待故障服务的返回,就会把本人的服务拖垮,这样就能够把故障管制在肯定范畴之内)。

超时策略利用

实现:当 reviews 调用故障 ratings 服务时,reviews 疾速失败

步骤:

  1. 将 productpage 申请打到 reviews v3 版本

`kubectl apply -f virtual-service-reviews-v3.yaml
`

此时页面只会显示带红心的评分

  1. 给 ratings 服务注入 2s 延时,模仿故障

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

利用配置后,从新拜访 productpage 页面,可发现有 2s 左右提早

  1. 给 reviews 服务配置 1s 超时

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

从新刷新 productpage 页面, 因为 reviews 调用 ratings 有 2s 延时的接口,而 reviews 服务的超时工夫只有 1s,因而页面显示服务不可用,实现了疾速失败。

重试

重试是一直的去尝试从新调用申请失败的服务,它通常解决的是因为网络问题导致通信失败的问题,通过重试能够进步零碎的稳定性。

重试策略利用

实现:当 ratings 服务呈现故障时,主动重试 3 次

步骤:

配置 ratings 服务 3 次重试

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

正文完
 0