D5.06.4Queue and drop rules设计研究

仲裁需要处理同一时刻多个事件的排队与丢弃规则

别名: queueing · dropping · capacity limits

概念解释

仲裁必须明确同一时刻多个事件如何排队、如何丢弃。只定义优先级而不定义队列与丢弃规则会产生隐性行为:队列无限增长导致所有事件都被延迟,或系统在压力下随机丢弃。这两者都会让优先级的承诺落空。

机制

排队与丢弃规则解决的是容量问题。单位时间内可处理的事件数有限,超过容量后必须延后或放弃。排队策略决定哪些事件等待以及等待多久,丢弃策略决定什么情况下不再等待。若队列没有上限,关键事件可能排在大量低优先级事件之后,实际延迟远超预期;若丢弃规则缺失,系统在压力下可能丢弃关键事件而非替代性最低的那个。规则还需要说明被丢弃事件是否有记录,否则用户无从得知曾有事件发生。

怎么研究

可构造高并发压力测试:在超过处理容量的条件下触发大量事件,记录关键事件的延迟分布、被丢弃的事件类型与用户是否察觉丢失。变量包括并发强度、队列上限与丢弃依据。因变量应包括关键事件是否被丢弃,因为它是优先级承诺是否成立的核心检验。

边界

当事件密度始终远低于处理容量时,队列与丢弃规则很少被触发,其细节不影响体验。当用户处于低负荷状态时,可以容忍更长的排队。若系统能够提示队列状态,用户可以接受一定程度的延迟,因此队列规则需要与状态提示配合设计。

怎么落地

  • 为队列设定上限,并规定达到上限后的处理方式。
  • 明确丢弃依据,保证关键事件不因队列满而被优先丢弃。
  • 记录被丢弃的事件,使用户可以事后了解曾发生的内容。
  • 验证方式:在超过容量的并发条件下测量关键事件的延迟与丢弃情况,确认优先级承诺在压力下仍然成立。

延伸

  • 同组D5.06.3 优先级应按后果等级而非按通道能力 · D5.06.5 中断式仲裁打断当前反馈,排队式仲裁延后播放
  • 相邻D2.10.3 仲裁结果需要让用户知晓还有其他警报在排队 · D5.06.6 跨应用的仲裁通常由系统层而非单个应用决定
  • 站内检索queue policy · drop policy · backpressure

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/D5.06.4