The Tail at Scale,是 Google 2013 年发表的一篇论文,大规模在线服务的长尾延迟问题。
要知道怎么解决长尾问题,先要理解长尾延迟是个什么问题,在开发在线服务的时候,我们都知道要关注服务的 p99/p999 延迟,要让大部分用户都能够在预期的时间范围内获得响应。
下面是一个不同响应时间的请求数分布图:
大部分系统也都遵循这种分布规律,现在互联网的系统规模比较大,一个服务依赖几十上百个服务的情况都是有可能的。单一模块的长尾延迟会在有大量依赖的情况下,在服务粒度被放大,《The Tail at Scale》论文里给出了这样的例子。
考虑一个系统,大部分服务调用在 10ms 内响应,但 99 分位数的延迟为 1 秒。如果一个用户请求只在一个这样的服务上处理,那么 100 个用户请求中只有一个会很慢(一秒钟)。
这里的图表概述了在这种假设的情况下,服务级别的延迟是如何被非常小概率的大延迟值影响的。
如果一个用户请求必须从100个这样的服务并行收集响应,那么 63% 的用户请求将需要超过一秒钟(图中标记为 “x”)。
即使对于只有万分之一概率在单台服务器上遇到超过一秒的响应延迟的服务,如果服务的规模到达 2000 实例的话