闭卷重建RPC为什么不是本地函数的故障模型、消息状态、不变量与恢复边界。
分布式系统与可靠服务 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建故障模型:崩溃、遗漏与拜占庭的故障模型、消息状态、不变量与恢复边界。
闭卷重建超时预算与截止时间传播的故障模型、消息状态、不变量与恢复边界。
闭卷重建重试、退避与重试风暴的故障模型、消息状态、不变量与恢复边界。
闭卷重建幂等键、去重与结果缓存的故障模型、消息状态、不变量与恢复边界。
闭卷重建故障检测器与心跳怀疑的故障模型、消息状态、不变量与恢复边界。
闭卷重建实验:RPC重试与去重状态机的故障模型、消息状态、不变量与恢复边界。
机制:崩溃停止、消息丢失/延迟和任意恶意行为需要不同假设、检测与冗余成本;实验:为三个服务列可观察症状与允许的故障集合,再选择相应协议;边界:生产中常用崩溃故障模型不代表任意数据损坏自动被共识解决。
机制:远程调用包含序列化、排队、传输、远端执行和返回,调用方可能只看到超时而不知道远端结果;实验:画一次扣款请求从客户端到数据库提交再到响应丢失的时间线;边界:函数异常通常知道未返回;RPC超时不能区分请求未到达与已成功但响应丢失。
机制:重试仅在错误可恢复且预算允许时进行,指数退避和抖动减少同步冲击;实验:模拟100客户端在依赖恢复前的固定间隔与指数退避请求量;边界:多层各重试三次可把一次请求放大数十倍;重试不是可用性的免费午餐。
机制:端到端截止时间应在调用链中递减传播,覆盖排队、连接、执行和返回,并为清理留余量;实验:给三级调用链分配200ms预算,计算每层剩余时间与最晚取消点;边界:每层固定相同超时会让下游在上游放弃后继续做无用功,形成资源雪崩。
机制:节点只能基于一段时间未见响应产生怀疑,网络分区与节点崩溃在异步系统中不可完全区分;实验:输入心跳时刻和自适应阈值,输出suspect与恢复事件;边界:怀疑不是死亡证明,自动切主必须配合任期、仲裁或隔离旧主。
机制:客户端提供稳定请求ID,服务端原子记录执行结果,重复请求返回同一结果;实验:模拟响应丢失后的同ID重试,检查业务执行次数始终为一;边界:去重表过期过早会重新执行,永不过期又会无界增长;键作用域必须明确。
机制:区分未发送、已到达、已执行、响应丢失和客户端确认,输出执行次数与最终结果;实验:覆盖首次成功、请求丢失、响应丢失和去重过期四类测试;边界:若模型只把超时当失败,就无法暴露重复副作用。