向中国和新加坡传送内容时的延迟和加载时间问题


Latency and load time issues when delivering content to China and Singapore

Background -简单地说,我正在做一个PHP/MySQL网站,试图解决中国的延迟和缓慢的加载时间问题。我在弗吉尼亚州和新加坡设置了一个web服务器实例(EC2),并在弗吉尼亚州设置了一个复制到新加坡的RDS。由于无法写入AWS RDS副本,因此目前新加坡EC2正在写入弗吉尼亚RDS。

最重要的是,我已经实现了一个延迟规则,使用Route 53来确定客户端应该被交付到哪个EC2。

这是我的设置图,如果你有帮助的话。

问题 -上面的解决方案减少了从数据库读取时的延迟和加载时间,但是当从新加坡向数据库写入时,站点速度变慢了一点,当然,因为它是在弗吉尼亚写数据库。

我的猜测是,我需要一个主数据库在亚洲和弗吉尼亚州,但我不知道如何保持两个主同步。

RDS不支持多主机,您可以设置自己的实例来实现,但这并非没有一些挑战。在我看来,您正在沿着使基础设施变得复杂的路线前进,而没有分析所有可能的解决方案来改善延迟。

中国的情况有点独特。如果你真的想在中国做生意,你真的需要直接在中国经营。过滤和其他限制可能会使在国外做生意变得困难。在这种情况下,您可能会将中国商店与其他商店分开管理。

在投资多数据中心设置之前,我会确保在延迟方面照顾好所有其他容易实现的目标。

  1. 确保web应用程序的响应时间尽可能低。使用opcaches和缓存,调整mysql,使用nginx代替apache的php-fpm。新遗物是很棒的剖析。目标延迟取决于应用程序。
  2. 将所有静态资源移动到CDN。如果你正在使用AWS, cloudfront是最好的选择。
  3. 选择对大多数客户具有最佳平均延迟的数据中心。如果您的大多数客户都在亚洲和美国,那么美国西部数据中心可能会更好。(城市之间的路线可能会变得很有趣,并非所有路线都是地理上最有效的路线。这取决于不同ISP之间的协议)

如果您已经完成了所有这些,并且您仍然希望沿着多数据中心的路径运行。您必须设置自己的Mysql多主安装。这条路线可能存在缺陷。延迟可能会导致事务如何工作的问题。