监听 Facebook 或维基百科 IP 地址的硬件是什么?

Igo*_*sky 32 domain-name-system scalability anycast

为了我的求知欲,我试图了解像 Facebook 或 Wikipedia 这样的大型网站是如何运作的。我阅读了构建可扩展站点的各种技术,但我仍然对一个特定的细节感到困惑。

让我困惑的部分是,最终,DNS 会将整个域映射到单个 IP 地址,或者在循环 DNS 的情况下映射到少数 IP 地址。

例如,wikipedia.org 只有一个 A 类 DNS 记录。因此,来自世界各地的访问维基百科的人必须向 DNS 中指定的一个 IP 地址发送请求。

侦听大型站点的 IP 地址的硬件是什么,它如何处理来自世界各地用户请求的所有负载?

编辑 1:感谢所有回复!任播似乎是一个可行的答案......有谁知道一种检查特定 IP 地址是否是任播路由的方法,以便我可以验证这确实是大型站点在实践中使用的技巧?

编辑 2:在对该主题进行更多阅读后,似乎任播通常不用于动态 Web 内容。任播通常用于 UDP(例如,DNS 查找),或有时用于静态内容。

需要注意的一件有趣的事情是 Facebook 使用 profile.ak.fbcdn.net 来托管静态内容,如样式表和 javascript 库。每次 ping 这个名字时,我都会收到来自不同 IP 地址的响应。但是,我不知道这是正在使用的任播还是完全不同的技术。

回到我最初的问题:据我所知,即使是大型站点也会有一个昂贵的负载平衡硬件来监听其少数公共 IP 地址。

Sim*_*Sim 9

它不一定是一个硬件,而是一个被设计成可扩展的完整系统。这不仅包括硬件,更重要的是应用程序设计、数据库设计(关系或其他)、网络、存储以及它们如何组合在一起。

一个很好的出发点,你的好奇心在寻找如何一些大型网站的规模是高可扩展性-从这里开始高可扩展性的维基媒体架构Facebook的Twitter的作为例子。

关于您关于 DNS 和单个 IP 地址以及轮询的问题,这些类型的站点通常使用负载平衡作为呈现单个 IP 地址的方法。这可以通过专门的硬件负载平衡器或通过在通用服务器上运行的软件来完成。然后,由负载均衡器管理的 IP 传入请求被分发到一系列对最终用户透明的服务器。

有关此主题的良好解释,包括硬件和软件负载平衡器/代理的比较以及它们与 DNS 循环的比较,请阅读负载平衡 Web 应用程序

  • 还有一些任播地址,您可以在其中 ping 一个 ip 地址,但它们分布(随机\任意\有意)到一系列“真实”端点之一。我不确定 Wikipedia\Google 是否使用它,但我很确定某些根 DNS 服务器会使用它。我对维基百科的 ping 与你的匹配(我在爱尔兰)所以我怀疑他们可能正在使用它。 (2认同)
  • 维基百科也碰巧使用 pdns 的 geoip 后端来进行大部分负载平衡。更多信息在这里:http://wikitech.wikimedia.org/view/PowerDNS 和这里:http://wikitech.wikimedia.org/view/DNS (2认同)