我有一个关于大型网站负载分担的问题。
所以,如果你有一个网站,每天有几百万的适合,你将需要有一个架构,可以支持这种压力。 你可以做一两件事:
让我来解决第二种方法,这样你就拥有了一系列运行Web服务器软件的机器,并且都可以访问相同的网站页面。 您可以使用DNS中的循环模式将负载分散到这些机器上,也可以使用Load Ballancing Switch。
这种方法的优点是: – 冗余 – 服务器可能会失败,其他服务器会“挑起冗余” – 增量 – 能够轻松地将新机器添加到这个设置。
除非您的应用程序需要大量的处理能力,否则在此之前很可能会耗尽networking带宽。 这有两个后果:
负载平衡交换机在处理占用大部分请求处理并且同步不重要的场景中是最有用的,例如当构buildsearch引擎时(查询是复杂的,数据集没有被修改,因此单个服务器可以在私人副本上工作,并且对数小时以上的数据进行操作是完全可以接受的)。
对于需要login的应用程序,您可能需要一个单独的基础结构来跟踪比那更快的用户和会话,例如包含用户数据和凭证信息的复制数据库以及可以build立会话ID有效性的单独服务。
一个可能的实现是通过数字签名用户ID,发送cookie的服务器ID以及证书被接受时的时间戳来生成会话ID cookie。 然后个别前端服务器可以联系login服务器来查询cookie的有效性(在真实情况下,您可能想要在那里进行一些优化)。
共享的数据集很难pipe理,如何实现这个最好的答案将高度依赖于所讨论的应用程序; 这将是一个较长的文章。
当硬件使用不足或需要快速更换时,虚拟化可以提供帮助。 这对于负载均衡没有什么关系,但是肯定是您为服务分布在各个服务器上的工具之一。