代码之家  ›  专栏  ›  技术社区  ›  Jorge Ferreira

谷歌怎么能这么快?

  •  89
  • Jorge Ferreira  · 技术社区  · 16 年前

    是什么技术和编程决策使得谷歌能够如此快速地提供查询服务?

    这是一种压倒性的想法,即使我把一个桌面应用程序,并在我的机器上使用它可能不会一半的速度,谷歌。继续学习我说的。


    以下是一些很好的答案和建议:

    19 回复  |  直到 15 年前
        1
  •  47
  •   HenryR    16 年前

    延迟被磁盘访问消除。因此,有理由相信用于回答查询的所有数据都保存在内存中。这意味着数千台服务器,每台服务器都复制多个碎片中的一个。因此,搜索的关键路径不太可能触及其旗舰分布式系统技术GFS、MapReduce或BigTable。这些将用于粗略地处理爬虫程序结果。

    关于搜索,最方便的一点是,不需要有高度一致的结果或完全最新的数据,因此谷歌不会因为有了更为最新的搜索结果而被阻止响应查询。

        2
  •  26
  •   Vasil    16 年前

    把它放在一个答案里有点太多了。 http://en.wikipedia.org/wiki/Google_platform

        3
  •  22
  •   Konrad Rudolph    16 年前

    我一直觉得有趣的一个事实是,谷歌实际上是由生物信息学运营的(凯,我觉得这很有趣,因为我是一个生物信息学家)。让我解释一下。

    早期的生物信息学面临着快速搜索巨大字符串中的小文本的挑战。对我们来说,这根巨大的绳子当然是DNA。通常不是单个DNA,而是来自不同物种/个体的多个DNA的数据库。小文本是蛋白质或它们的基因对应物,一种基因。计算生物学家最初的大部分工作仅限于寻找基因之间的同源性。这样做是为了通过注意与已知基因的相似性来确定新发现基因的功能。

    现在,这些DNA串确实变得非常大,(有损!)搜索必须非常有效。因此,大多数现代字符串查找理论都是在计算生物学的背景下发展起来的。

    然而,相当一段时间以前,传统的文本搜索已经用尽了。需要一种新的方法,允许在次线性时间内搜索大字符串,即不查看每个字符。人们发现,可以通过预处理大字符串并在其上构建特殊的索引数据结构来解决这一问题。已经提出了许多不同的此类数据结构。每种方法都有各自的优点和缺点,但有一种特别引人注目,因为它允许在固定时间内进行查找。现在,从谷歌运营的数量级来看,这不再是严格意义上的事实,因为必须考虑服务器间的负载平衡、预处理和其他一些复杂的东西。

    但在本质上,所谓的 q-gram指数 允许以固定时间进行查找。唯一的缺点是:数据结构变得非常庞大。本质上,允许查找最多包含 Q 字符(因此得名),它需要一个表,该表的每个可能的字符组合都有一个字段 Q 字母(即, s 哪里 是字母表的大小,比如说36(=26+10))。此外,索引字符串中的每个字母位置都必须有一个字段(如果是google,则为每个网站)。

    为了减少规模,谷歌可能会使用多个索引(事实上,它们 ,提供拼写更正等服务)。最上面的那些不会在字符级工作,而是在单词级工作。这减少了 Q s

    长话短说,这些 Q -gram索引数据结构可以说是谷歌搜索算法中最核心的部分。不幸的是,没有很好的非技术性论文来解释这一点 Q -克指数起作用。据我所知,唯一一份描述这种索引工作原理的出版物是《我的 bachelor thesis .

        4
  •  5
  •   Jorge Ferreira    16 年前

    以下是一些很好的答案和建议:

        5
  •  4
  •   Anders Sandvig    16 年前

    他们已经在大量硬件上实现了良好的分布式算法。

        6
  •  4
  •   MSalters    16 年前

    最重要的延迟之一是Web服务器将查询发送到Web服务器,然后返回响应。这种延迟受到光速的限制,连谷歌都必须遵守。然而,他们在世界各地都有数据中心。因此,到其中任何一个的平均距离都较低。这样可以降低延迟。当然,差异是以毫秒为单位测量的,但是如果响应必须在1000毫秒内到达,这很重要。

        7
  •  4
  •   HanClinto    16 年前

    they use pigeons 当然

    哦,是的,还有Mapreduce。

        8
  •  3
  •   Richard Walton    16 年前

    他们几乎在定制文件系统的数千台PC上缓存了互联网的本地副本。

        9
  •  3
  •   Matthew Watson    16 年前

    谷歌雇佣最好的人中的最好的。一些IT界最聪明的人在谷歌工作。他们几乎可以在硬件和工程师身上投入无限的资金。

    他们拥有地理位置优越的服务器场。

        10
  •  3
  •   Jilles    16 年前

    1. 平行化 请求(例如,将单个请求拆分为较小的集合)
    2. 异步的 (尽可能实现异步,例如不会阻止用户的请求)
    3. 记忆力
    4. (在手之前尽可能多地做工作,不要等待用户要求数据/处理)
    5. 关心你的 (见伊斯洛和朋友)
        11
  •  2
  •   Nicolas    16 年前

    你可以在 the google research homepage 一些关于谷歌的人写的研究论文的建议。你应该从解释这个问题开始 google file system map/reduce algorithm 试图了解谷歌页面背后的情况。

        12
  •  2
  •   user20804    16 年前

    这个链接也提供了很多信息 Behind the scenes of a google query

        13
  •  1
  •   TraumaPony    16 年前

    硬件

    很多很多硬件。他们使用大量的商用PC集群作为服务器场。

        14
  •  1
  •   aku    16 年前

        15
  •  1
  •   kohlerm    16 年前
        17
  •  0
  •   Vinko Vrsalovic    16 年前

    algorithms 这可以利用硬件的力量。喜欢 mapreduce

        18
  •  0
  •   yann.kmm    16 年前
        19
  •  0
  •   computinglife    16 年前
    1. 多级数据存储、处理和检索

    2. 检索结果的良好框架