【问题标题】:How do multiple servers work in sync for web application?多台服务器如何为 Web 应用程序同步工作?
【发布时间】:2010-10-28 17:42:37
【问题描述】:
  1. 我的第一个问题是,我经常看到人们使用多个专用服务器来运行他们的网站,并处理来自用户的查询。但他们究竟是如何做到这一点的呢?我的意思是,当我输入一个域名时,DNS 会将其解析为一个 IP 地址,但在那之后我就迷路了……那里有某种主/从架构来负载平衡(可能)数百个传入请求服务器?

  2. 如果是这样,各种服务器如何共享数据(例如数据库)?它们会连接到同一个硬盘吗?

【问题讨论】:

    标签: architecture server server-side backend


    【解决方案1】:

    ultramonkey 将很好地描述如何在多台服务器之间进行负载平衡,因此您会看到 1 个 IP 地址,但连接会路由到多台服务器之一(包括容错)。

    如果您的 Web 服务器没有使用相同的存储(公共存储可能很棘手,您必须使用 SAN 和像 GFS 这样的“共享”文件系统或数据库),那么您应该启用sticky sessions 告诉路由器每个客户端第一次会选择一个服务器与之通信,并与该服务器保持联系。这容错性较差(但在 Web 中,您只需刷新断开的连接即可重新开始),但架构起来更容易(而且速度更快,因为每个 Web 服务器都可以保持独立)

    在真正容错的情况下,您需要解决的另一个问题是将物理服务器彼此远离,这会为大多数共享设计带来性能问题(即,如果它们'在不同的国家),是使用多个服务器的方法,使用单个 DNS 名称并定期在它们之间复制数据。 DNS load balancing 可能是将多个 Web 服务器用作单个网站的最简单方法。

    在这些情况下,数据库通常可以是所有服务器与之通信的单个数据库,或者可以自己共享,使用集群或更常见的日志传送,以确保您有一个备份准备好在主服务器出现故障时上线。对于备份服务器而言,日志传送比位于远处的服务器更常见。

    【讨论】:

      【解决方案2】:

      1) 您可以使用 NLB(网络负载平衡)——它将为场中的所有服务器使用相同的 IP http://en.wikipedia.org/wiki/Network_Load_Balancing_Services http://technet.microsoft.com/en-us/library/cc759510.aspx

      2) 用于数据库的 SQL 集群和用于非关系数据的通用文件存储 http://www.sql-server-performance.com/articles/clustering/clustering_intro_p1.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多