当前位置:首页 > 技术 > 正文内容

Linkerd 服务配置文件规范详解

访客 技术 2026年7月3日 4

服务配置文件为 Linkerd 服务网格提供关于特定服务的附加行为定义,用于精细化控制流量路由、重试策略与失败判定逻辑。

核心结构 服务配置文件必须包含以下两个顶层字段:

  • routes:一个 route 对象数组,定义不同请求路径的处理规则。
  • retryBudget:指定该服务允许的最大重试比例及时间窗口策略。

Route 配置项 每个 route 必须包含以下字段:

字段 说明
name 路由名称,用于在监控和日志中标识该规则。
condition 请求匹配条件,决定哪些请求被此路由捕获。
responseClasses (可选)响应分类规则列表,用于标记成功或失败响应。
isRetryable 布尔值,表示该路由的失败请求是否应自动重试。
timeout 请求从发出到完成(含重试)的最大等待时间,单位为秒。

请求匹配条件(Condition) condition 必须精确包含以下任一类型:

类型 说明
pathRegex 使用正则表达式匹配请求路径。
method 匹配请求方法(如 GET, POST 等)。
all 所有子条件均需满足。
any 至少一个子条件满足即可。
not 条件不成立时才匹配。

示例:

condition:
  pathRegex: '/users/\d+'

多个条件组合等价于使用 all

condition:
  all:
    - method: POST
    - pathRegex: '/users/\d+'

复杂组合支持嵌套:

condition:
  any:
    - all:
        - method: POST
        - pathRegex: '/users/\d+'
    - all:
        - not:
            method: DELETE
        - pathRegex: /config.json

响应分类(Response Class) 用于定义哪些响应被视为失败。

字段 说明
condition 响应匹配规则,决定响应是否属于该分类。
isFailure 若为 true,则此类响应将触发重试机制。

响应匹配规则(Response Match) 与请求匹配类似,仅支持以下一种方式:

类型 说明
status 匹配状态码范围。
all 所有条件同时满足。
any 至少一个条件满足。
not 不满足条件时匹配。

状态码范围(Status Range)示例:

status:
  min: 500
  max: 599

该配置将匹配所有 5xx 错误。

重试预算(Retry Budget) 控制服务的重试频率,防止过量重试造成雪崩。

字段 说明
retryRatio 最大重试次数占原始请求的比例(如 0.1 表示最多 10% 的请求可重试)。
minRetriesPerSecond 即使超过比率,也允许最低每秒若干次重试(用于快速恢复)。
ttl 统计周期长度,例如 60s,决定多久内计算一次重试率。

配置示例:

retryBudget:
  retryRatio: 0.2
  minRetriesPerSecond: 2
  ttl: 30s

此设置表示:每 30 秒内,最多允许原始请求量的 20% 进行重试,且即使超出比例,每秒仍可至少尝试 2 次。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。