2026 年 9 月 5 日,讯果完成礼品卡查询线路的调度改造。新版把 132 条地区线路按照最近 5 分钟的延迟、成功率与队列长度动态排序,线路切换耗时从 1.1 秒降到 0.4 秒,整体掉线率从 3.2% 降至 1.4%,18 个地区的平均查询延迟稳定在 38 毫秒。这次改造覆盖全部套餐,用户更新客户端后自动生效。

线路问题在大批量任务里会被放大。旧版本的线路选择是“选定一条,跑到底”,一旦某条线路抖动,客户端要么整批等待,要么人工暂停后切换,切换过程需要重新建立连接并校验会话,平均耗时 1.1 秒。对于 6,000 张的任务,如果中途切换 30 次,光切换就吃掉半分钟,还不算等待时间。

132 条线路的动态排序

新调度器为每条线路维护一个滑动窗口,记录最近 300 次请求的延迟、成功率、超时数与当前排队任务量。综合得分每 15 秒刷新一次,得分高的线路优先取任务。为了避免“所有任务挤到最快的那条线”,调度器同时设置容量上限,单条线路的并发不超过其健康值的 70%,剩余任务自动流向次优线路。

网络架构负责人唐越把这件事比作高速收费站:“以前是认准一个闸口排队,前面出事故就全堵住;现在每个闸口都有实时车流数据,导航会把你带到更空的那条,同时不允许任何一条被挤爆。”他强调,动态排序不等于随机切换,同一批次的同一地区任务会尽量固定在同一条线路,减少会话重建。

改造后,线路切换只在三种情况下发生:当前线路连续失败 5 次、延迟超过阈值 400 毫秒且持续 30 秒、或者线路被手动停用。切换时客户端会保留已完成的结果,未完成的卡片重新入队,不会重复查询已成功的卡号。实测 6,000 张任务的平均切换次数从 27 次降到 9 次。

讯果礼品卡查询线路调度与运维工作台
调度器每 15 秒刷新线路得分,并限制单线并发上限

切换 0.4 秒的实测数据

测试组在 8 月 20 日至 8 月 31 日之间做了 240 次切换测试,覆盖香港、日本、新加坡、美国西岸等 12 个地区。切换耗时中位数 0.38 秒,P95 为 0.52 秒,最慢一次 0.91 秒。旧版本同场景的中位数是 1.12 秒,P95 为 1.68 秒。耗时下降主要来自连接预建立:调度器在判断某条线路可能不可用时,提前与备选线路完成握手,真正切换时只做会话迁移。

延迟方面,18 个地区的加权平均从 61 毫秒降到 38 毫秒,其中香港与日本线路改善最明显,分别从 42 毫秒、57 毫秒降到 26 毫秒、33 毫秒。掉线率从 3.2% 降到 1.4%,按每天 20 万次查询计算,相当于每天少断 3,600 次,挽回的时间大约 24 分钟。

唐越在复盘文档里记录了一个反直觉的发现:把线路数量从 96 条增加到 132 条,并没有让调度变慢。原因是新调度器只对健康线路做全量排序,不健康线路进入冷却队列,冷却期内不参与计算,实际参与排序的线路通常只有 40 到 60 条,计算开销反而比旧版更低。客户端启动时的线路探测耗时也从 2.6 秒降到 1.4 秒。

失败重试与降级策略

新版把失败分成可重试与不可重试两类。超时、连接重置、5xx 响应属于可重试,最多重试 3 次,间隔按 0.8 秒、1.6 秒、3.2 秒递增;卡号格式错误、状态明确为失效属于不可重试,直接写入结果,不浪费线程。所有重试记录都会写入报表的“重试次数”字段,方便对账时解释某张卡为什么慢。

当超过 60% 的线路同时不可用时,客户端会进入降级模式:线程数自动降到 160,任务继续但速度变慢,界面顶部显示当前状态与预计剩余时间,而不是直接报错退出。降级期间已完成的结果照常保存,网络恢复后自动回到正常线程数。测试中模拟过一次持续 4 分钟的全面抖动,任务在恢复后 2 分 10 秒内补齐了积压的 812 张卡。

线路改造已随 v5.1.1 推送,所有套餐用户更新后自动使用新调度器,无需额外配置。对于有自建线路的团队,客户端保留“自定义线路”入口,可以导入自己的线路清单并参与排序,但需要自行承担可用性。想验证实际延迟的团队,可以在下载页获取客户端,用 1,000 张卡跑一轮并查看报表里的线路编号与延迟字段。