我可以/我应该将Cloudfront添加到运行在弹性beanstalk上的我的Web服务

时间:2015-02-16 17:52:50

标签: caching amazon-web-services elastic-beanstalk amazon-cloudfront

现状

我在ElasticBeanstalk上运行了一个Java Tomcat应用程序。该应用程序是一个Web服务,它接收搜索查询并以Xml格式返回结果。 web服务仅每月更新一次新数据,因此在月末发送的任何查询将返回与月初返回的相同的结果。

我们利用EB的负载平衡,因此通常只有一个EC2实例正在运行,但在使用峰值时,另一个EC2实例可能会启动。

为了允许部署新版本Elastic Beanstalk,我们在Route53上有一个域名,并且一个子域名映射到EB应用程序,客户使用这个子域名来使用web服务。

这样做效果相当不错,除非峰值使用率略高于正常使用率,因此需要更多实例开始增加成本,但即使使用额外的机器也需要更慢的响应率。

我应该使用CloudFront

我想知道我是否可以使用CloudFront来缓存这些响应,我做了这些假设

  1. EB
  2. 的峰值和谷值会减少
  3. 如果假设云端请求比EB上的额外负载便宜,我会省钱。
  4. 这会提高不在我EB服务器附近的客户的响应率,即EB服务器位于欧盟,但我有很多美国客户。
  5. 如果是这样,我该怎么做

    我尝试创建 Cloudfront Distribution ,但在原始域名字段中,它只列出了我的s3存储桶,而不是我的S3域,所以还没有进一步。< / p>

2 个答案:

答案 0 :(得分:2)

我始终将云端放在我在AWS上提供的任何解决方案之前。回答您的具体问题:

  1. 很可能是的,它会卸载一些可能转到EC2实例的工作,因此它可能会阻止额外的实例有时会旋转。
  2. 也许,也许不是。它可能会为你节省金钱,但它也可能最终导致你的财富损失。 Cloudfront可能被黑客滥用,如果没有其他原因而不是给你一笔巨额账单,那么你可能想要添加一个账单提醒,这样你就不会对此感到惊讶。
  3. 是的,它很可能会提高您网站的响应能力。这是我一直使用它的主要原因。

答案 1 :(得分:1)

CloudFront确实允许您提供动态内容:http://aws.amazon.com/cloudfront/dynamic-content/但是从阅读中看来它似乎会根据URL模式缓存查询结果。这会与您网站的使用兼容吗?

有关如何将EC2指定为CloudFront原点的信息,请访问:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CustomOriginBestPractices.html