SuperAPI AI 工具集

durability

编程与开发

查看项目

更新于 10-31 12:39

技能介绍

durability 是 rat-stack 中的一项开发技能,目标是让 rat-stack 应用在提供商、连接池或依赖变慢,或工作进程死亡时仍然站得住。技能说明强调:Effect 不是 BEAM,持久性存在于存储中;Effect 在单个 JavaScript 运行时里把每个 fiber 作为并发计算运行,而不是隔离进程,Effect 4.0.0 没有 OTP 重启监督器,结构化 fiber 所有权不会重建丢失的状态。

适用时机:在改动以下内容前应加载本技能——处理器复用的数据库连接、套接字或提供商 SDK;从请求开始的提供商调用;必须跨请求、隔离区或部署存活的工作;超时或重试;对大量条目执行的循环或 forEach;调用方共享的 Deferred、Cache、Ref、Semaphore、Latch 或 PubSub;可能需要部署才能更改的可调参数;可能停止工作的门禁、检查或拒绝。普通纯函数使用 uncomplect,有限模式使用 add a lifecycle machine。

主要模式包括:按查询租用连接;在提交时应答并将分发移出请求;在边界处设置一次提供商超时;用键限制在途工作;将等待者限定在请求范围内;用账本爬升开关;在存活问题上失败开放、在伤害问题上失败关闭。每个模式都有对应原则文件、示例代码和测试围栏,测试会在植入 bug 时失败。

使用方式:先命名慢的东西及其最坏延迟,列出等待期间持有的资源,命名持久记录和重新驱动它的所有者,从列表选择模式并阅读原则文件,把原语放在一个接缝处,超时从 Context.Reference 或 Config 读取而非字面量,编写生成慢速和崩溃情况的属性或模型测试,先植入 bug 确认测试失败再恢复,最后运行 pnpm turbo run check test build。

技能还给出按风险排序的原则:持久化已接受的意图和恢复进度并命名后端;在启用重试前让重复外部效果安全;状态与检查点在同一事务中耦合;为每个任务指定生命周期所有者、为失败工作进程指定恢复所有者;限制等待并携带调用方剩余截止时间;在一个知情边界处设置带抖动和有限预算的重试;限制已接纳工作并按工作负载隔离稀缺容量;停止调用已知不健康的依赖并显式探测恢复;从已知状态恢复并使用稳定重放输入;跨部署保留旧载荷含义;持久停放耗尽或畸形的工作并给出返回路径;区分预期拒绝、瞬态故障和缺陷;在源头回收累积并限制结果;用确定性历史和坏依赖证明恢复;观察有用结果、积压和饱和;为关键客户端提供独立池。

技能还讨论恢复所有者选择,包括进程本地资源与子生命周期、响应后 Worker 工作、合法模式与重试取消事件、按实体持久状态、权威关系状态、持久多步编排、堆/CPU/致命运行时隔离,并提醒每项操作只保留一个恢复权威。最后要求报告持久化所有者、恢复所有者、操作标识、确认边界、剩余不确定性和已运行检查,并明确缺失的保证。