检查(例如)A
的记录,我只看到一个 IP 地址。youtube.com
考虑到他们处理的流量,这怎么可能呢?
他们是否使用带有负载均衡器的任播?
答案1
有几个特征可能造成了您所看到的情况:
任播和地理平衡将有助于分散负载,而无需用户看到多个或几个 IP。负载平衡器将有助于提高一个数据中心内的可靠性,因此这些少数 IP 不太可能出现单点故障。
现实与问题不符
尽管在评论中提出了疑问和确认,但我看到了更多 YouTube 的 IP:
$ dig youtube.com A
; <<>> DiG 9.8.1-P1 <<>> youtube.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 195
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;youtube.com. IN A
;; ANSWER SECTION:
youtube.com. 300 IN A 173.194.33.163
youtube.com. 300 IN A 173.194.33.164
youtube.com. 300 IN A 173.194.33.165
youtube.com. 300 IN A 173.194.33.166
youtube.com. 300 IN A 173.194.33.167
youtube.com. 300 IN A 173.194.33.168
youtube.com. 300 IN A 173.194.33.169
youtube.com. 300 IN A 173.194.33.174
youtube.com. 300 IN A 173.194.33.160
youtube.com. 300 IN A 173.194.33.161
youtube.com. 300 IN A 173.194.33.162
;; Query time: 14 msec
;; SERVER: 172.16.0.23#53(172.16.0.23)
;; WHEN: Wed Aug 26 23:45:18 2015
;; MSG SIZE rcvd: 205
答案2
像 YouTube 这样的大型网站采用了许多策略:
并非每个人都会获得相同的 IP 地址。不同的 DNS 请求将
A
返回不同的记录。有时根据地理指标返回不同的 IP 地址(您会获得“靠近您”的 IP),而有些变化只是为了负载平衡目的。实际上,只有极少数请求会转到“主”网站。如果您检查构成从 请求的页面的全套请求
youtube.com
,您会注意到,绝大多数请求会转到其他域,这些域将单独处理。大量的负载均衡器。一旦请求到达单个 IP 地址,高效且高度可扩展的负载均衡器就会将请求定向到大量前端 Web 服务器。
许多机器处理单个请求。前端 Web 服务器实际上处理请求的工作很少。它们主要用于 HTTP 解析和路由到更多的服务器层,每个集群只负责生成页面这一大任务中很小的一部分。我手头没有现成的参考资料,但我记得几年前读过一篇文章,说每个 Google 搜索请求都会导致一百多个单独的服务器运行代码以生成响应。
希望这能让你稍微理清一些。如果你还有其他问题,最好创建一个新的、严格指定的问题,而不是在评论中进行冗长的讨论。
答案3
Google/Youtube(以及许多其他公司,特别是 CDN)将服务器与许多 ISP 共置,然后 DNS 将返回这些服务器的 IP 地址。这解释了为什么有些人可能只看到一个 IP,而其他人则看到十几个。
因此,您看到的服务器可能实际上并不位于 Google 数据中心,而是距离您的家/办公室只有几英里,无论 ISP 的头端在哪里。有时,您可以使用 traceroute 实用程序(Windows 中的 tracert)和/或反向 DNS 了解服务器的位置。
因此,这些服务器也不会服务于世界上的所有流量,而只是服务于来自一个城市的流量,有时只服务于该城市内的一个 ISP 的流量。
当然,这些服务器不容纳全部谷歌的知识;他们是一个前端,可能还有相当多的缓存等。正如 Womble 所描述的,他们不知道的任何内容,他们都会转发到谷歌的数据中心。