把额度当作一种需要排班的生产资源,而不是谁先点谁先得。通常应保留“固定配额+临时借调”两层结构:把可预期的高频查询划给固定配额,把剩余额度留给临时借调,并规定借调必须说明用途和截止时间。如果业务波动大、团队间查询量差异悬殊,改用“按事件优先级动态分配”更合适;如果查询结果直接对应对外承诺,则应改为“先到先服务+承诺时限保护”。判断依据不是团队大小,而是查询失败会造成什么后果、能否延后、有没有替代数据源。
固定配额适合那些每天或每周都会发生、且延迟会直接阻塞他人工作的查询。典型特征是:查询对象固定、结果用于内部例行决策、失败后没有别的数据可以替代。这类查询如果被临时借调挤掉,代价通常不是“晚一点知道”,而是下游任务整体停摆。
判断时可以用一个假设例子:假设A团队每天需要核对一批页面的可访问状态,B团队每周做一次内容盘点。若两者共用同一额度池,A的日常核对更接近固定配额,B的盘点更适合放进临时借调。这里的关键不是A更重要,而是A的查询频率和阻塞面更大。动作上,先列出过去两周实际发生的查询类型和发起时间,再按“是否每天发生、失败后谁会被卡住”两列打标,标记结果直接决定哪些进固定配额。
只保留固定配额会让突发需求无处安放,所以需要临时借调层。但借调如果没有截止时间,就会慢慢变成新的固定占用。可执行的做法是:借调申请必须写明用途、预计查询次数、最晚完成时间,到期未用完的额度自动回到公共池。
借调规则成立的前提是团队之间能接受“先借后还”的记账方式。如果团队之间缺乏统一记录,或者借调频繁到无法追踪,那么动态分配会比借调更可靠。动态分配的做法是:按事件优先级排队,高优先级事件插队时,低优先级查询被暂停而不是取消,等额度释放后继续。这个动作的结果是,低优先级任务的等待时间变长,但不会丢失进度,适合查询可以中断续跑的场景。
常见的错误是按团队级别分配优先顺序,结果导致级别高的团队占用大量额度却只做低价值查询。更稳的做法是按查询后果分级:
分级之后,优先顺序不再取决于谁先提交,而取决于查询失败会阻塞什么。动作上,要求每个团队在提交查询前标注级别,并写明判断理由。如果标注理由无法说清阻塞对象,就降一级处理。这个动作会减少大量“看起来急”的查询,让额度流向真正卡住流程的地方。
当共用额度提前用完,不要立刻认定是某个团队滥用。额度消耗速度变化还有几种合理解释:查询对象数量本身增加了;某个例行任务从每周改成每天;工具对同一对象的重复查询没有去重;或者某次批量操作把观察级查询集中提交。这些原因对应不同的处理方式。
如果原因是查询对象增加,属于业务变化,应重新评估固定配额总量,而不是惩罚团队。如果原因是重复查询,应在提交前做对象去重,减少无效消耗。如果原因是观察级查询集中提交,应把观察级任务挪到额度低谷时段,并设置单次提交上限。动作上,先看消耗曲线和查询类型分布,再决定是保留现有规则、改写分级标准,还是退出共用额度模式改为独立额度。退出共用额度的前提是:团队之间无法就优先级达成一致,且各自查询量都足以单独占用一份额度。
规则只有落到具体时段和具体动作才算生效。一个可操作的排班表至少包含:固定配额对应的查询类型、临时借调的申请方式、阻塞级查询的抢占条件、观察级查询的可执行时段。排班表不需要复杂,但必须让每个团队知道自己的查询在什么条件下会被暂停、暂停后如何恢复。
如果排班表执行一段时间后,阻塞级查询仍然频繁被延迟,说明固定配额总量不足,应考虑增加额度或减少查询对象,而不是继续压缩观察级。如果观察级查询长期无法执行,说明分级过严,可以把部分观察级提升为决策级,前提是能说明它影响哪个具体决策。这两种调整方向不同,判断依据是延迟发生在哪一级,而不是总额度用了多少。