AWS - 如何更快地为海外用户提供服务

AWS - 如何更快地为海外用户提供服务

我们的基础设施依赖于 us-east-1 区域的 AWS。(EC2、CloudFront、RDS、ElastiCache)

我们现在有越来越多的用户来自亚太地区。用户开始抱怨我们网站的网络速度。(请注意,我们已经使用 CloudFront 来提供静态资产)

研究后的一些线索:

  1. 将一组基础设施克隆到亚太地区(例如日本)
    • $$关注
    • 快速测试发现的事实:us-east-1 <---> ap-norteast-1 之间的延迟约为 160-180 毫秒。
    • 在我们的案例中,这实际上不可行。尽管我们可以在日本创建数据库只读副本,但 Web 服务器仍必须将写入操作发送到美国。
    • ElastiCache 不支持跨区域。即美国 ElastiCache 仅可由美国 ec2 实例访问。
  2. 每个区域都有一个 VPC,使用 IPSec/VPN 隧道将两个 VPC 互连。日本仅包含 Web 服务器,所有其他服务仍保留在美国。
    • 尽管如此,美国和日本之间仍存在延迟
  3. 在 #2 中使用 WAN 优化器来建立 VPN 隧道
    • 有人有这方面的经验吗?我在 Google 上找不到太多关于 VPC-to-VPC 优化的信息...
  4. 使用 CloudFlare 的 Railgun
    • 我们只需要在美国网络服务器上安装 Railgun 监听器
    • 简单多了,我们甚至不需要在 JP 中运行任何东西

我的问题:

  • 最好的方法/行业最佳实践是什么?扩展到另一个地区?我知道有些公司只在一个地区有基础设施,但他们如何确保海外用户的速度?
  • 对于#2,持久隧道有帮助吗?
  • 对于 #2/#3,假设可以优化区域之间的延迟和网络速度,那么在日本真的有必要拥有 Web 服务器吗?在日本只使用代理服务器将请求代理到美国 Web 服务器怎么样?

任何帮助都将不胜感激,谢谢 :D

答案1

世界很大,虽然网络带宽在稳步增加,但世界一端与地球另一端之间的网络延迟不会很快消失。

多层次的优化和调整可以改善用户体验,但最终您将达到这样一个水平:进一步提高性能的唯一可行方法是通过让您的数据在物理上更接近最终用户来减少延迟。

http://chimera.labs.oreilly.com/books/1230000000545/ch10.html#MORE_BANDWIDTH_DOESNT_MATTER_MUCH

一本有很多见解的好书,上面图表的来源是高性能浏览器网络作者为网络性能工程师 Ilya Grigorik。

最经济/最优的取决于你的具体情况,您的代码库需要仔细测试。没有神奇的基础设施解决方案。

大多数需要大规模扩展的应用程序都要经过一次或多次重新设计才能解决这个问题。设计选择、技术和假设对 X 数量用户来说似乎有效,但对 100 倍或 1000 倍的用户来说却被证明是错误的。

有趣的经验教训如下:高可扩展性博客

重新设计你的应用程序代码动态内容可以更好地缓存是一种方法,例如,看看 varnish 模型,它允许您的 Web 应用程序按需使缓存的动态内容无效,当大量动态内容实际上不需要为每个请求完全重新生成时,这种方法非常有效。这应该允许您更好地利用 CDN,并且意味着您可以停留在单个可用区域内。

重新设计您的应用程序,使其能够在多个可用区域上运行,不仅能提高国际用户的性能,还能改善灾难恢复。

答案2

你必须在用户体验和金钱之间做出权衡。首先,我想知道有多少用户来自亚太地区。如果少于 10%,你最好的做法可能是等待,看看会发生什么。

你也没有说明你支持什么类型的应用程序以及它对延迟的敏感程度。如果它是一个实时视频聊天应用程序,你会做出一个决定,如果它是一个最终一致的社交媒体应用程序,你会做出另一个决定。

综上所述,您已经找到了正确的选项。

我最喜欢你的选项 2。我会将尽可能多的代理/网络服务放在尽可能靠近大多数用户的位置。尽管有些流量总是必须返回到你的 us-east-1 位置,但让第一个连接在区域内终止将带来更好的用户体验。想想 SSL 往返。

我也会看看快闪记忆体

我还会考虑将贵公司在美国的业务从 us-east-1 迁移到 us-west-2。

VPN 隧道是一个好主意,而且设置起来也不难。

我会设置使用 OpenVPN 的冗余隧道

相关内容