【问题标题】:should I make my cdn origin to pull from s3 or cloudfront?我应该让我的 cdn 来源从 s3 或 cloudfront 中提取吗?
【发布时间】:2016-04-03 06:05:36
【问题描述】:
所以我开始maxcdn cdn服务,
现在我将我的 s3 存储桶端点作为源,因此当 cdn 中出现缺失时,它会从 s3 中提取文件。
为这个存储桶启用 CloudFront 并让 maxcdn 从 CloudFront 中提取文件会很聪明吗?所以它将是“双cdn”
喜欢maxcdn(miss?)->CloudFront(miss?)->s3
我的假设是正确的吗
【问题讨论】:
标签:
amazon-s3
cdn
amazon-cloudfront
【解决方案1】:
这似乎有点不寻常,但可能值得一试。
将 S3 与 CloudFront 配对的一个有时被忽视的好处是,即使请求导致缓存未命中(以及相关的上传),S3(或 EC2,AWS 内的任何源服务器)和CloudFront 在 Amazon 拥有和管理的高性能 IP 网络上传输。
数据必须在从 S3 到其他 CDN 的请求边缘节点的距离上从 S3 传输到第 3 方 CDN,并且通过 CloudFront 运行请求往往会导致流量在全球范围内花费更多的距离亚马逊网络比直接向 S3 发出请求时可能具有的网络。这应该可以减轻跨 Internet 长距离遍历所涉及的一些变数和变量,并且应该等同于某种性能优势,尽管它可能有些微妙且难以量化。很难推测。
中间的 CloudFront 还会更改您为下载带宽支付的价格。如果您将远程 CDN 直接连接到 S3 作为其源,则您的每 GB AWS 传输带宽费用仅基于 S3 区域,并且该费用在区域之间有所不同——但您的存储桶仅在一个区域中,并且该地区的费用将适用于所有转移。
但 S3 和 CloudFront 之间的下载传输是免费的,因此您的下载带宽费用基于远程 CDN 用于获取内容的 CloudFront 边缘位置。此价格也因地区而异,您可以使用 CloudFront 定价类别进一步控制价格/性能。在某些情况下,来自 CloudFront 的带宽费用低于直接访问 S3 的费用,但在其他情况下,它们会更高。
远程 CDN 上的缓存未命中是否可能与 CloudFront 上的缓存未命中一致,很大程度上取决于您的站点访问者的全球分布,以及远程 CDN 边缘站点的数量、分布和路由,以及如何MaxCDN 处理不受欢迎的对象的驱逐(以及 CloudFront 的处理方式)。 MaxCDN 的边缘站点似乎比 CloudFront 少,因此 MaxCDN 缓存未命中与 CloudFront 缓存未命中同时发生的几率似乎相当高。
不过,尝试一下还是很容易的,您可以分析 CloudFront 统计数据和日志以确定它的交互方式。