你如何扩展像谷歌这样的HTTP服务器?

时间:2008-10-17 02:07:27

标签: http webserver scalability

我经常惊讶于我可以随时随地访问www.google.com,并快速获取返回页面。

当然,他们压缩他们的输出并保持最小的设计 - 这有帮助。

但他们必须同时点击数百万同时点击网站上的DNS,并将其列为“www.google.com”。

所有设置了Apache或其他网络服务器的人都知道事情很棒且速度超快,直到你开始获得几千个同时连接,更不用说数百万了!

那么,他们是如何做到的?我猜他们有一整套服务器机器,但你永远不会知道它。刚才我去Verizon的网址是www22.verizon.com。您永远不会看到“www22.google.com”,从不

任何想法他们使用什么特定技术,或者我们非谷歌凡人可以使用哪些技术来做同样的事情?

9 个答案:

答案 0 :(得分:44)

google.com,update.microsoft.com以及处理惊人的高聚合带宽的其他服务通过DNS完成了大部分工作。

BGP Anycast路由用于从世界各地的多个点宣布其DNS服务器的IP地址。每个DNS服务器都配置为将google.com解析为地理位置接近的数据中心内的IP地址。所以这是基于地理位置的第一级负载平衡。

接下来,虽然google.com的DNS查询只返回少量IP地址,但DNS服务器会快速浏览其响应中的大量地址。请求google.com的每个客户端都会获得特定答案,并且可以暂时缓存该答案,但下一个客户端将获得不同的IP地址。所以这是第二级负载平衡。

第三,他们使用传统的服务器负载均衡器将会话映射到单个IP地址到多个后端服务器。所以这是第三级负载平衡。

答案 1 :(得分:15)

答案 2 :(得分:7)

昨晚在奥斯汀的谷歌开放日,艾伦·尤斯塔斯展示了谷歌在俄勒冈州达尔斯的数据中心的照片,并表示它大约有3个足球场。

这是其中一个较新的,但谷歌有多个数据中心。这并不是每个查询都转到同一台计算机上。

即便如此,如果您猜测Google拥有多少台计算机,以及每秒对Google进行多少次查询,每台服务器都必须处理大量请求。

以下是关于如何促进这一点的一些解读:

http://research.google.com/archive/bigtable.html
http://labs.google.com/papers/gfs.html

一般只有http://research.google.com/,那里有很多很酷的信息。

答案 3 :(得分:4)

Moishe是正确的:虽然只是简单地提供Google规模的静态网络内容具有足够的挑战性,但它已经很好理解,很多其他人都会这样做。

然而,实际上是谷歌是开拓者的动态内容的交付,因为他们的论文启动了所有内容:The Anatomy of a Search Engine。有许多聪明的技巧,其中一些已在此处提及,但仍然......在Google上执行任何查询,查询字词不属于一起 - 它们不会被缓存 - 你会在几百毫秒内得到一个结果集:这绝对令人难以置信。

为了使其更加复杂,还有新的SearchWiki功能,可以在每个搜索结果中添加动态内容,并在您登录时对结果进行有限的个性化设置。

谷歌一直很好地开放(在某种程度上)聪明才能实现这一切。最后,这一切都归结为构建一切可以水平扩展的东西。这就是谷歌如何跟上互联网的指数增长:只需为你的BigTable,Map / Reduce和谷歌文件系统农场添加更多硬件。通过使用大量商品硬件,良好的基础设施和管理,Google可以将整个索引保留在内存中,从一台机器到另一台机器的查询比转到磁盘更快。

与此同时,雅虎!买了越来越大的单片机,​​直到Sun再也不能让它们变得足够大了,他们不得不切换到Hadoop!,为时已晚。

在Google上扩展HTTP服务器很容易!

答案 4 :(得分:3)

http://www.akamai.com

或者,翻译成英文(也许可以详细阐述Chris的答案),使用内容交付网络(CDN)与世界各地的节点 - 请注意,这些不仅仅是数据中心,而是实际的Web服务器(虽然我确定大多数人都不会因为这种区别而煞费苦心)。 Akamai只是一个例子;点击谷歌“内容传递网络”,你一定会找到其他人。

您也可以实施缓存策略,但这可能不会让您感觉相当远。 ;)

答案 5 :(得分:1)

除了大型网络农场之外,毫无疑问他们正在进行大量的缓存。他们可以缓存从页面内容到频繁搜索术语的任何内容。而缓存是非谷歌凡人也可以做的事情。

答案 6 :(得分:0)

这是正常的互联网流量处理。 Google确实在全球范围内拥有响应www.google.com的全部数据中心

答案 7 :(得分:0)

他们还有自定义Web服务器,TCP / IP堆栈[以及基础设施],我几年前在某处读过......我怀疑Apache或IIS或任何其他商业/流行的Web服务器是否可以匹配...

答案 8 :(得分:0)

有一篇关于扩展HTTP服务器的优秀文章:

http://www.kegel.com/c10k.html