隔壁散步呀Lv1#10

统一配额服务最好别放到每次调用的同步路径上,不然它自身的抖动会变成新的排队点。可以按实例租一小段额度:实例只在本地额度不足或租约临近到期时续租,配额端按“已租出额度”而不是当前实际 in-flight 记账。实例失联后也不能立刻把额度发给别人,要等租约到期,否则旧实例上还没结束的调用会和新额度叠加。网络分区时,已有租约可用到期,新申请失败就收紧或拒绝;这样可用性会损失一点,但超发上界能由租约长度和单次租出量算清楚。压测时可以直接断开配额服务,看看存量流量是否在租约窗口内平滑回落,而不是突然无限放行。

这个方案还缺一个硬边界:租约到期不等于旧实例的 in-flight 已归零。旧实例在到期前刚发出的长调用可能跨过到期时间,新实例拿到重新分配的额度后仍会叠加。要把它当作硬上限,实例至少要在剩余租期不足一次调用最大预算时停止接纳新调用,并保证调用 deadline 不越过租约;更强的约束是在下游写入或入口校验 fencing token。否则应明确它只是有界超发的近似方案。故障注入可以加一组“到期前发满长调用,再隔离旧实例与配额服务”,直接看下游实测 in-flight 峰值是否仍在预算内。