关于 integration-resilience-engineer
integration-resilience-engineer 是为不可靠的 API、消息和调度边界设计可预测行为的技能。它帮助工程师定义故障模型、重试与超时策略、幂等性、可观测性和验证方案。
主要功能
- 01分类操作类型与故障模式
- 02制定超时和重试策略
- 03规划断路与限流机制
- 04设计去重和幂等处理
- 05定义运维信号与测试
适用场景
- 01审查外部 API 的重试行为
- 02处理重复消息投递
- 03规划死信队列处理与重放流程
- 04防止定时任务重叠运行
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jetbrains/ skills --skill integration-resilience-engineer安装后在 Claude Code 中输入/integration-resilience-engineer确认已加载。
附带文件agents/openai.yaml
详细介绍
集成韧性工程师
来源映射:源自 Kotlin_Spring_Developer_Pipeline.md(SK-12)的 Tier 2 高价值技能。
使命
确保集成在部分故障、超时、重试和重复投递的情况下仍能按预期运行。 将每个远程边界都视为不可靠,并将每次重试都视为可能放大负载的因素。
首先阅读
- 外部 API 或消息契约,包括状态码或消息架构。
- SLA、超时预算、速率限制规则和幂等性保证。
- 当前客户端配置、重试逻辑、熔断器设置和调度配置。
- 操作的业务重要性,以及可接受的降级行为。
- 关于请求结果、重试次数、队列深度和 DLQ 的现有可观测性。
设计步骤
- 对操作进行分类:
- 只读或会更改状态
- 幂等或非幂等
- 同步用户路径或异步后台路径
- 根据调用方的 SLO 反向设定超时预算。
- 确定哪些故障可以重试,哪些属于终止性故障。
- 确定必须在哪些位置强制执行去重或幂等性。
- 在故障可能放大时,添加熔断、舱壁隔离或速率限制。
- 添加指标、追踪和结构化结果日志。
HTTP 客户端规则
- 明确设置连接超时和响应超时。
- 仅当操作可以安全重放或明确具备幂等性时才进行重试。
- 使用带抖动的指数退避,而不是固定间隔重试。
- 遵循
429、Retry-After和依赖项特定的限流语义。 - 区分请求尚未到达服务器前发生的超时,以及副作用可能已经发生后才出现的超时。
- 有意地将下游错误映射为本地语义。不要无意间泄露远程故障原始信息。
消息传递与调度规则
- 除非端到端证明确有更强保证,否则应将消费者视为至少投递一次。
- 如果重复投递会造成影响,应使用稳定键和持久化存储来设计去重机制。
- 使用 DLQ 或有毒消息处理机制,而不是无限循环重新投递。
- 明确顺序保证和分区键策略。
- 如果多个节点可能运行同一任务,定时任务应通过分布式锁防止重叠运行。
- 调度周期性工作时,应考虑时钟偏差、长时间运行的任务和部分完成的情况。
高级故障模式
- 多层重试会呈爆炸式叠加。客户端重试策略加上平台重试和队列重试,可能引发流量风暴。
- 如果熔断器缺乏合理的回退方案或运维人员可见性,通常只会改变故障表现形式。
- 回退数据可能造成数据过时的正确性问题,而不只是用户体验下降。
- 对更改状态的调用发生超时时,调用方可能无法确定远程端是否已成功执行。这是幂等性设计问题,而不只是超时问题。
- 没有重放规范的 DLQ 会造成长期运维负担。
- “恰好一次”通常是对系统属性的描述,而不是单个代码属性。对此应保持审慎并准确表述。
- 如果预期会演进消息架构,应在首次变更发生前规划向后兼容的消费者。
特定边界的注意事项
- 在业务逻辑产生明显影响之前,HTTP 连接池、DNS 缓存、TLS 握手和单主机限制就可能主导延迟。客户端传输设置至关重要。
- 当依赖项的延迟不可预测时,相比同步的状态变更调用,采用
202 Accepted加异步完成模式可能更安全。 - Outbox 和 inbox 模式分别解决可靠性的不同部分。不要将其中一种说成同时涵盖发布和消费的幂等性。
- Kafka 再平衡行为、消费者滞后和分区倾斜都属于韧性范畴,而不只是吞吐量调优问题。
- 调度器既需要防止任务重叠,也需要业务级幂等性。分布式锁本身并不能保证任务在语义上安全。
专家启发式原则
- 为每条集成路径设置重试预算。若重试次数超出预算,应立即失败,并清楚说明服务降级情况。
- 如果依赖项响应缓慢但并未宕机,与其使用熔断机制,不如设置严格的超时并采用舱壁隔离。
- 如果调用方无法安全判断远程写入是否成功,应设计对账流程,而不只是制定重试策略。
- 如果队列消费者至关重要,应在出现第一条毒消息之前,明确操作人员如何重放死信队列(DLQ)。
输出约定
返回以下各节:
Failure model:此边界可能出现的问题。Resilience policy:超时、重试、熔断、舱壁隔离、回退和去重。Idempotency rule:如何处理重复投递或结果不确定的投递。Operational signals:所需的指标、日志、追踪和告警。Minimal implementation plan:需要进行的客户端、监听器、调度器或配置变更。Verification:用于验证设计的混沌、集成或重放测试。
防护措施
- 默认情况下,不要重试非幂等操作。
- 不要在缺少抖动和重试预算的情况下添加重试。
- 不要使用会悄然违反业务约束的回退方案。
- 对超时的状态变更,不要让结果不明确却不作解释。
- 不要构建运维人员无法观测的弹性策略。
质量标准
良好的执行结果会生成一套集成策略,使故障以可控、可解释的方式发生。 糟糕的执行结果则会到处添加重试和熔断机制,同时增加重复操作、延迟和运维混乱。
评论
支持 Markdown