知识卡片
冗余请求应对长尾延迟
内容
请求需100台服务器联合处理,即使每台仅1%延迟概率,用户感知延迟概率高达63%——机器越多长尾延迟被放大越厉害。应对策略是”冗余请求”:客户端先请求一台,未在约定时间内响应就立即请求另一台,谁先返回用谁。实测增加约2%请求量就能把99.9分位响应时间从1800ms降到74ms。发散:分布式延迟由最慢环节的出现概率决定,而非平均表现。
参考来源
- 位置:第8章《高并发问题》「Google的冗余请求」案例(源文件:_epub-src/text/part0037.html)
- 结论依据:原文明确引用Google论文The Tail at Scale的案例:100台服务器每台1%延迟概率,用户请求延迟概率高达63%;解决方法是冗余请求——客户端先发一个请求,超时未响应就发给另一台,实测2%额外请求量把99.9%响应时间从1800ms降到74ms,直接支持卡片论述。
- 原始内容:"假设一个用户的请求需要100台服务器同时联合处理,每台服务器有1%的概率发生调用延迟……那么对于C端用户来说,响应时间大于1s的概率是63%……采用这种方法,可以仅用2%的额外请求将系统99.9%的请求响应时间从1800ms降低到74ms。"