零点零八分,履约链第一处仓超过三分钟。
七秒后,第二处也越线。
总队列的平均等待仍只有一分零九秒。华南、华北四个区域还有余量,把两处华东仓的积压埋在了平均数里。刻度云按分区生成两张高等级卡,没有把它们合成一条“全国库存正常”。
丁卓先看任务构成。
华东两处仓的队列里,已付款订单库存扣减、待支付订单预占、活动页库存预览和历史差异回写共用一组工作进程。零点后的付款订单突然增加,预览刷新也跟着放大。外部优惠券流量虽然已经下降,订单成功后的库存动作正在形成第二波。
最老的一批已付款订单已经等了三分十四秒。
订单本身付款成功,不能因为库存回写慢就让支付侧重新创建一笔。也不能简单删掉待支付预占,否则仍在付款过程中的用户可能拿到错误库存。
备战阶段准备过的第三级降级卡被调出来。
第一项,已付款订单库存扣减进入优先队列;待支付预占保持原顺序但降低并发,活动页预览暂停实时刷新。第二项,把两个拥塞仓与其余区域分开,空闲区域不替拥塞区域制造一个好看的平均数。第三项,历史差异按确认位置分批回写,任何一批都要核业务序号和幂等结果。
这套动作已经演练,却仍要活动时重新批准。
嘉禾履约业务负责人问:“已付款优先,会不会把正在支付的订单饿死?”
罗致远让丁卓给出配额。
刻度科技没有建议把全部容量都切给已付款。两处仓各保留两成处理能力给待支付预占,一成给状态确认,七成用于已付款订单;预览刷新转用一分钟缓存,历史差异暂不进入实时队列。
若待支付预占最老等待超过两分钟,配额重新评估。若已付款订单等待继续上涨,则升级到嘉禾业务降级,不由刻度科技私自取消订单或改库存规则。
零点十一分,嘉禾完成双人审批。
客户值班人员使用限时令牌执行队列路由。丁卓只核对编号、分区和配额,没有登录仓配生产账号。
零点十三分,已付款优先开始生效。
队列没有立即下降。
第一轮路由抽查还发现四十六条状态不完整的任务。
它们有支付业务号,却没有收到最终成功回执。若只看业务号,会被误放进已付款优先队列;若只看回执缺失,又可能把已经扣款但回执延迟的订单压到后面。
丁卓没有替嘉禾判断付款结果。四十六条进入单独核对区,由嘉禾支付系统按原业务号查询最终状态。二十九条确认已付,补入优先队列;十七条仍为处理中,保留待支付配额,不重新发起扣款。
这次核对多花了两分钟,却避免“已付优先”变成一条只凭字段猜状态的规则。
两处仓已经积下的任务仍要处理,路由只改变后续顺序。第一分钟完成量低于进入量百分之八,最老等待升到四分零六秒。丁卓没有扩大并发,先核下游库存写入是否还能承受现有速度。
嘉禾本地抽样显示,库存接口写入时间稳定,真正拥堵在任务调度。增加写入进程可能让相同商品争用更重,不能把排队问题推到数据库里。
零点十六分,完成量与进入量持平。
零点十八分,已付款队列第一次开始缩短。最老等待在四分三十九秒处停住,没有继续上升。
历史差异仍有两千余条待回写。
嘉禾值班人员按仓区分别建立重放批次。第一批每处五十条,按原业务序号处理;相同订单行与库存版本使用同一幂等标识,不因为换进新队列便生成一份新的业务身份。
第一批九十三条成功,五条返回已存在,两条发现更高库存版本。
两条更高版本没有被旧结果覆盖。它们转入人工复核,原任务与拒绝原因都保留。五条“已存在”则由客户在本地抽查原成功记录,确认不是刻度科技为了清数手工改状态。
零点二十二分,第二批扩大到每处一百条。
一处仓完成速度稳定,另一处的商品热点冲突开始增加。丁卓没有按全国统一速度继续加批;前者保持一百条,后者退回五十条,并按商品分片错开重放。
分区队列的意义不是一起跑得更快。
它让慢仓不拖住其他区域,也让快仓的平均值不能遮住慢仓。两处仓的批准、批次和停止条件分别记录。
零点二十七分,已付款订单最老等待回到三分钟以内。
待支付预占最高一分二十二秒,没有触发重新分配。订单创建和支付确认继续稳定,未出现同一业务号重复扣款。
零点三十五分,两处仓都满足连续观察条件。