【google论文一】面向星球的网络搜索:google集群架构 - 网易博客
为了能够支持可扩展的并行化,google的网络搜索应用让不同的查询由不同的处理器处理,同时通过划分全局索引,使得单个查询可以利用多个处理器处理。针对所要处理的工作负载类型,google的集群架构由15000个普通pc机和容错软件组成。这种架构达到了很高的性能,同时由于采用了普通pc机,也节省了采用昂贵的高端服务器的大部分花费。
很少有网络服务的单个请求像搜索引擎占用那样多的计算资源。平均来看,在google上的每次查询需要读取数百m的数据耗费数10亿的cpu指令循环。为了能够支持峰值在每秒数千次请求流,需要与世界上最大的超级计算机规模相当的硬件设施。通过容错性软件将15000个普通pc机联合起来,提供了一种比使用高端服务器更廉价的解决方案。
本文我们将介绍google的集群架构,讨论那些影响到设计方案的最重要的因素:能效和性价比。在我们的实际操作中,能效实际上是一个关键的度量标准,因为数据中心的电力是有限的,因此电力耗费和制冷成为运作中的关键。
我们的应用本身可以很容易进行并行化:不同的查询可以运行在不同的处理器上,同时全局索引也划分的使得单个查询可以使用多个处理器。因此,处理器的性价比比峰值性能变得更重要。同时,google的应用是面向吞吐率的,可以更有效的利用处理器提供的并行化,比如并行多线程(SMT),或者多核处理器(CMP)。
Google架构概览
Google的软件架构来源于两个基本的观点。首先我们需要在软件层面提供可靠性,而不是通过硬件,这样我们就可以使用普通的pc构建廉价的高端集群。其次,我们不断的裁剪设计是为了达到最好的总体请求吞吐率,不是为了提高服务器的峰值响应时间, 因为我们可以通过并行化独立的请求来控制响应时间。
我们相信使用不可靠的廉价pc来构建可靠的计算设施可以达到最好的性价比。通过在不同的机器上备份服务,以及自动化的故障检测和错误处理,为我们的环境提供软件级的可靠性。这种软件级的可靠性在我们的系统设计中几乎随处可见。检查一下一次查询处理的控制流程,有助于理解这种高级的查询服务系统,同时也有助于对于可靠性考虑的理解。
Read full article from 【google论文一】面向星球的网络搜索:google集群架构 - 网易博客
No comments:
Post a Comment