《istio-in-action 系列》 11. VirtualService 重试机制
VirtualService 重试机制
在 Istio VirtualService 中, 有一个很关键的机制: 重试。
发起重试不需要业务本身实现, 而是 istio 通过 envoy 发起的。
其中有几个关键参数
attempts
: 重试次数(不含初始请求), 即最大请求次数为 n+1。perTryTimeout
: 发起重试的间隔时间。- 必须大于 1ms。
- 默认于 http route 中的 timeout 一致, 即无 timeout 时间
retryOn
: 执行重试的触发条件。
http retry
|
|
测试
部署用例 11 进行测试。
|
|
执行 curl 请求命令, 通过结果可以看到, 总共耗时 8 秒。
|
|
通过 review 的日志可以看到, 总共请求了 4次 (1+3), 每次间隔 2秒 。 刚好 8 秒超时
[GIN] 2021/11/15 - 15:56:08 | 200 | 3.000822016s | 10.42.0.1 | GET "/review/delay?delay=3"
[GIN] 2021/11/15 - 15:56:10 | 200 | 3.000916703s | 10.42.0.1 | GET "/review/delay?delay=3"
[GIN] 2021/11/15 - 15:56:12 | 200 | 3.000723194s | 10.42.0.1 | GET "/review/delay?delay=3"
[GIN] 2021/11/15 - 15:56:14 | 200 | 3.000565097s | 10.42.0.1 | GET "/review/delay?delay=3"
设置 timeout
如下, 增加 http route 的全局 timeout 参数。
|
|
虽然按照 重试 逻辑依旧需要 4次 8秒。 但受限于 timeout 的阈值, 请求在 5秒 后超时退出。
|
|
- 原文链接:https://typonotes.com/posts/books/istio-in-action/chapter02/11-vs-http-retry/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。