作者:Jeffrey Dean, Luiz André Barroso Google Inc 2013-2
原文:http://cacm.acm.org/magazines/2013/2/160173-the-tail-at-scale/fulltext
译者:phylips@bmy 2013-02-23
译文:http://duanple.blog.163.com/blog/static/7097176720133511217445/
序
那些可以对用户动作进行快速响应(100ms以内)的系统与那些响应慢的系统相比,可以提供更自然流畅的体验。随着Internet连通性的提高以及warehouse-scale 计算系统的出现,使得web服务可以在访问存在数千台服务器上的TB级数据的同时还能保持流畅的响应;比如Google搜索系统会根据用户类型对查询结果进行交互式更新,会基于用户当前已经输入的前缀预测用户查询意图,在数十毫秒的时间内执行该查询并完成结果展示。新兴的增强现实(augmented-reality )设备(比如Google Glass)为保证无缝的交互,对相关web服务的快速响应提出了更高要求。
对于服务提供者来说,随着系统规模和复杂度的上升或者是总体访问量的增加, 要将交互式服务的延迟分布中的尾端也保持在很低的水平上会变得非常有挑战性。暂时性的高延迟(在中等规模的情况下影响并不大)在大规模场景下可能会严重影响服务整体性能。正如容错计算的目标是在一堆不可靠组件的基础上构建一个可靠的整体一样,大规模在线服务需要在一堆不可预测的组件的基础上创建一个响应可预测的整体;我们将这样的系统称为“lantency tail-tolerant”的,或者简称为“tail-tolerant”的。本文中,我们会列举一些大规模在线系统中发生高延迟的常见起因,同时会描述一些降低它们的严重程度或者是减轻对系统整体性能影响的技术。在很多情况下,“tail-tolerant”技术可以直接利用那些已经部署的用来实现容错的资源,以降低额外开销。我们会来探索一下这些技术是如何在不加重延迟长尾的情况下实现系统利用率的提高,进而避免冗余资源的浪费的。
要点提示
l 在大规模分布式系统中,偶发的系统性能卡壳(hiccup)可能会影响到所有请求的某个重要环节
l 对于大规模分布式系统来说,要完全消除产生延迟抖动的所有来源是不切实际的,尤其是在一个共享的环境中。
l 通过采用类似容错计算所采用的技术,“tail-tolerant”技术在不可预测的组件之上构建了一个可预测的整体
18.The Tail at Scale