标准答案

  1. 先按用户、租户、接口和全局容量限流,避免无效流量进入昂贵路径。
  2. 对短暂突发使用有限队列和截止时间,队列等待超过价值就应拒绝而不是继续排队。
  3. 非核心读、推荐、统计等能力可以返回旧值、简化结果或关闭;扣款、库存和权限等核心操作不能伪造成功。
  4. 使用优先级和隔离资源保护关键流量,并监控拒绝率、等待时间和核心成功率。

题目解析

过载保护要先保护事实正确和核心路径,再决定哪些工作可以等待或降级。入口限流减少无效工作,有界排队吸收短突发,容量耗尽时拒绝比让所有请求无限等待更可控。

优先级必须对应真实资源和用户影响。只在队列里标记高优先级,却让所有任务共用同一个连接池,仍然可能被低价值工作拖住。

降级结果要明确语义:旧缓存、部分结果和“处理中”都不能伪装成扣款、库存或权限操作已经成功。监控要区分限流、排队、拒绝和降级。

常见误区

  • 误区:只做全局限流。改正:同时考虑租户、用户、接口成本和核心优先级,避免大租户占满全部额度。
  • 误区:队列无限增长来避免拒绝。改正:设置容量和最大等待时间,过期任务应拒绝、合并或转存。
  • 误区:降级返回与事实不符的成功结果。改正:只返回可证明的缓存或处理中状态,关键业务失败必须让调用方感知。

作者信息