有限队列与准入控制

本页目录

有限队列把无界等待转化为接纳与拒绝的取舍。队长不再增长,只能说明存储有界;若多数请求被拒绝,系统仍可能不满足业务目标。

M/M/1/K:K 包括正在服务的请求

沿用 Poisson 到达、独立指数服务、单台 FCFS,但系统最多容纳 个请求。满时立即拒绝,不重试、不放弃。定义提供负荷比 ,有限状态 的稳态为:

当 时,各状态概率为 ,没有奇点。有限链在正的到达与服务率下可正再生,即使提供流量超过能力也有稳态。注意此时 不等于实际利用率,甚至可以大于 1。

Poisson 到达使拒绝概率等于 。有效接纳率、实际忙碌比例与平均系统时间分别为:

这里 。对内部在途数使用外部 会把被拒绝、没有进入系统的请求混进分母。

正在呈现知识画面
有限队列与准入控制 · 实验

M/M/1/K,μ=100/s;K含服务中的1个位置,满时立即拒绝且不重试。有限链有稳态,但接纳率、拒绝率和延迟共同决定是否可用。

默认 /s、/s、,拒绝概率约 25.1%,接纳率约 89.9/s,平均系统时间约 33.6 ms。把 K 增大,拒绝可能减少、实际忙碌更充分,但接纳者的等待通常增加。实验没有超时、失败或重试,所以接纳者最终都完成;生产中的成功速率还需另计。

准入、背压和超时各改变什么

准入在资源消耗前拒绝或延后工作;背压把下游承受能力反馈给上游,可能让等待转移到客户端或另一个队列;超时规定调用者愿意等多久。三者不能互相替代。

仅在客户端超时,服务器未必停止原工作。继续重试可能造成多个副本同时占用资源。应该传播截止时间、在排队和派工时检查剩余预算,并支持确实可执行的取消或去重语义。有限队列模型没有刻画这些机制,不能从其结果直接推导 deadline 成功率。

排队预算若为 20 ms,不能简单以平均 1000/s 乘 20 ms 就断言 K=20 满足 p99。前方服务成本、剩余服务、并行台数和波动都重要;若有可靠的单任务工作量上界,可建立保守等待上界,否则需要分布模型或测量。

成功完成工作量才是目标

吞吐应区分提供、接纳、完成和有效成功(goodput)。一个很快返回拒绝的系统,整体响应分位数甚至可能变好;应将拒绝率与成功请求延迟并列报告,并声明超时、取消和未完成请求如何计入 SLO。

自检

  1. 、 时,拒绝率和平均接纳者系统时间是多少?
参考思路

,拒绝率一半,接纳率 ,,故平均时间为 。K=1 没有等待位,接纳者立即服务;它不是“一个等待位加一个服务位”。

  1. 超时从 1 s 改成 100 ms,服务端工作量是否一定下降?
参考思路

不一定。若没有取消原工作且客户端更频繁重试,总工作量可能增加。需要观察尝试次数、服务端完成/取消、重复工作和资源占用,而不只看客户端等待变短。

延伸

有限容量记账见 MIT 排队讲义;实际准入与拒绝成本见 Google SRE。消息重复与业务身份见消息语义。