Linkerd 2.10 系列

Linkerd 2.10 中文手册持续修正更新中:

为了让 Linkerd 自动重试失败,有两个问题需要回答:

  • 应该重试哪些请求?
  • 请求应该重试多少次?

这两个问题都可以通过在服务配置文件

中为您发送请求的服务指定一些额外信息来回答。

之所以需要这些配置,是因为重试可能存在潜在危险。

自动重试更改状态的请求(例如提交金融交易的请求)可能会对您的用户体验产生负面影响。

此外,重试会增加系统负载。一组具有不断重试请求的服务可能会被重试打死,而没有时间恢复。

重试

对于幂等且没有主体的路由,您可以编辑服务配置文件(service profile)并将 isRetryable 添加到可重试路由:

spec:
routes:
- name: GET /api/annotations
condition:
method: GET
pathRegex: /api/annotations
isRetryable: true ### ADD THIS LINE ###

重试预算

retry budget 是一种机制,它限制可以对服务执行的重试次数占原始请求的百分比。

这可以防止重试使您的系统不堪重负。

默认情况下,重试最多可以增加 20% 的请求负载(加上每秒额外的 10 次“免费”重试)。

可以通过在您的 service profile 上设置 retryBudget 来调整这些设置。

spec:
retryBudget:
retryRatio: 0.2
minRetriesPerSecond: 10
ttl: 10s

监控重试

可以使用带有 --to 标志和 -o wide 标志的 linkerd viz routes 命令来监视重试。

由于重试是在客户端执行的,我们需要使用 --to 标志来查看一个资源发送到

另一个资源的请求的指标(从服务器的角度来看,重试只是常规请求)。

当指定这两个标志时,linkerd routes 命令将区分“有效(effective)”和“实际(actual)”流量。

ROUTE                       SERVICE   EFFECTIVE_SUCCESS   EFFECTIVE_RPS   ACTUAL_SUCCESS   ACTUAL_RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99
HEAD /authors/{id}.json authors 100.00% 2.8rps 58.45% 4.7rps 7ms 25ms 37ms
[DEFAULT] authors 0.00% 0.0rps 0.00% 0.0rps 0ms 0ms 0ms

实际请求代表客户端实际发送的所有请求,包括原始请求和重试。

有效请求只计算原始请求。由于原始请求可能会触发一次或多次重试,

因此在启用重试时,实际请求量通常高于有效请求量。

由于原始请求可能第一次失败,但该请求的重试可能会成功,

因此有效成功率(effective success rate)

通常(但不总是)高于实际成功率(actual success rate)。

我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)

最新文章

  1. SQL*Plus生成html文件
  2. 【Hibernate框架】关联映射(多对多关联映射)
  3. JavaScript中的防篡改对象
  4. Java泛型学习笔记 - (二)泛型类
  5. mint安装相关数据库lib
  6. JSP中request getParameter和getAttribute不同(转载)
  7. php SPL学习
  8. Java多线程——<五>后台线程(daemon)
  9. tokyocabinet安装日志(持续更新)
  10. .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)
  11. GAME——转圈游戏
  12. AC自动机模板1(【洛谷3808】)
  13. 【Hadoop 10周年】我与Hadoop不得不说的故事
  14. MD5 两次加密
  15. centos7图形界面安装
  16. devstack 安装(centos7)
  17. aspnet core 2.0 发布之后没有 views文件夹
  18. 排序算法<No.3>【桶排序】
  19. IOS 小新兵
  20. python Flask post 数据 输出

热门文章

  1. uiautomator2 入门教程
  2. 微信小程序云开发-云开发环境配置工作
  3. ThinkPHP中使用Verify类生产验证码不显示的原因
  4. P1447能量采集
  5. ECShop 2.x/3.x SQL注入/任意代码执行漏洞
  6. 比POSTMAN更好用!在国产接口调试工具APIPOST中使用Mock
  7. ArrayList 源码底层实现解析 基于1.8
  8. C++ //构造函数调用规则 //1.创建一个类,C++编译器会给每个类添加至少3个函数 //默认构造(空实现) //析构函数(空实现) //拷贝函数(值拷贝) //2.如果我们写了有参构造函数 编译器就不会提供默认构造函数 但是会提供拷贝构造函数 //3.如果我们写了拷贝函数 编译器就不再提供 默认 有参 构造函数
  9. Vue-Router学习第二弹动态路由\懒加载\嵌套路由
  10. SpringBoot报错:Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.