像Google / Facebook / etc这样的网站如何发展。即使他们收到这么多请求也不会得到DDOS?


14

我不明白的事情:

(数十万/数百?)成千上万的人同时尝试连接到诸如facebook.com或google.com之类的网站。

据我了解,它们必须都必须连接到同一台初始服务器(因为DNS将向其中许多返回相同的IP,因此所有请求都将到达相同的目标目的地)。

因此,即使计划将其转发到其他计算机,单个计算机/路由器也必须处理所有初始请求。

发生这种情况时,为什么单个设备不会过载?


8
您对DNS的假设是不正确的:en.wikipedia.org/wiki/Round-robin_DNS
Der Hochstapler,2012年

@OliverSalzburg:感谢您的链接,这很有帮助。
user541686'2

Answers:


20

您对它们都连接到同一服务器的理解是错误的,尽管如何获得这些结果的细节很复杂。 http://highscalability.com/提供了有关一些可伸缩性解决方案如何发挥作用的参考工作。

即使公共IP地址看起来相同,它们所拥有的不仅仅是客户端连接的“一台”服务器。例如,谷歌大量利用任播地址来指挥人员,通常他们不仅仅为每个客户提供一个IP地址-即使他们在您询问时仅返回一个地址也是如此。


+1感谢您指出错误。但我不禁要问:如果后续请求每次都发送到另一台服务器,那么服务器如何继续另一台服务器的会话?还是基于机器/会话的随机性?(我想他们都在后端进行同步,但是同时同步包含数百万用户信息的数千台服务器似乎非常慢。)
user541686

1
答案很复杂,并且取决于实现方式,但是一种方法是拥有一台机器,它们什么也不做,只能将数据包发送到正确的目的地,而无需实际建立TCP连接。寻求F5和其他负载平衡器供应商的详细信息。我认为Google使用了他们自己构建的东西。
Daniel Pittman '02

您还可以使用拆分会话方法。用户与他们直接连接的服务器之间存在会话,而用户与逻辑服务之间存在“主逻辑会话”。如果用户移至另一台服务器,则该服务器仅恢复与逻辑服务的同一主逻辑会话。
David Schwartz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.