如何分配HTTPstream量到最近的服务器?

这是一个两部分问题。 所以我在多伦多有一个DigitalOcean液滴,上面有一盏灯(当然还有一个网站)。 我想创build一个快照,在旧金山和阿姆斯特丹部署一个克隆。

  1. 我如何完成路由到基于位置的延迟最less的服务器?

  2. 我如何实时克隆这些网站。 例如,如果我编辑网站,更改反映在所有的服务器?

谢谢

您可以使用基于AWS Route 53延迟的路由 。 我相当有信心可以将R53与非AWS源一起使用。

或者CloudFlare有一个可以做“地理转向”的交通pipe理员 。 它可能还处于testing阶段,我不知道它是免费还是付费计划。

更新我只是注意到你的第二个问题。 我将假设您的目标主要是页面加载时间,而服务可用性则是次要问题。 我进一步假设这个网站是Wordpress,因为使用股票软件做下面的build议要比自定义的写的更难。

如果您希望两个站点同时提供stream量,则需要同步考虑某种多主数据库复制。 这不是那么简单,但是有技巧可以做到这一点。 数字海洋在这里有一个教程 。 RSync或BitTorrent同步将处理文件复制。

如果您的唯一目标是快速响应,那么使用单台服务器和CDN来确保您的静态资源在本地提供服务,CloudFlare非常有用。 您对网页的一次请求的延迟可能不是那么重要,大约需要100毫秒,其他资源将从最近的节点提供。

如果您的唯一目标是在发生故障时提供冗余,那么您可能仍会考虑数据库的主/副本typesscheme。 将所有stream量都路由到一台服务器,并将数据库和文件复制到第二个站点。 如果主站点发生故障,则将故障切换到第二个站点。 如果发生这种情况,您需要确定主站点恢复联机时该如何处理,以及如何恢复同步。 在这种情况下,多主控仍然可能是最简单的,以保持同步。

不幸的是,你所要做的并不是微不足道的,而且根据你的使用情况,可以适度到复杂。 我们真的需要了解您的目标,以提供更好的解决scheme。

蒂姆给你第一个问题提供了很好的解决

在第二个,(不幸)不,这属于“caching失效”的问题。 有多种解决scheme:

  • 使用一台服务器并使用CDN服务(Cloudflare / CloudFront)来caching内容。 您可以设置TTL来处理caching失效(即“最终一致性”模型),或者,
  • 使用一台服务器并使用CDN服务,并在更新内容后发送清除请求。
  • 保留三台服务器,那么你将需要开发API(s)来清除自己。