所以,我有一个专用服务器。我主持了大约十几个小网站。
将 S3(或 Mosso)用于我的图像和静态文件托管是否有真正的好处?我的服务器有足够的磁盘空间,还是我完全错过了 S3 的意义?
我一直在阅读它是多么美妙和便宜,我问自己“自己,你为什么不使用这个”,而回答总是“为什么?”
如果您在服务器的包含存储和带宽内运行并且您的需求得到了很好的满足,那么您已经在做最适合您的最简单的事情,这就是您应该始终开始的地方。在我的脑海中,我可以想到您将来可能希望将一些存储移动到 S3 的几个原因:
如果您在一台机器上运行整个网站,并且该机器足以处理您的网站,那么值得称赞的是,图像不是现在需要解决的瓶颈。暂时忘记 S3。
但是,随着您的服务器变得越来越繁忙,您将希望您的服务器将所有时间都花在服务器上。传输平面 HTML 文件和图像等静态内容是一项简单而愚蠢的工作,在它们上浪费宝贵的活动连接、带宽和 CPU 周期是不好的。通过切换到 S3,您的服务器可以专注于做重要的事情,这就是您的程序实际所做的事情。
S3 还具有分布和连接到可能比服务器更粗的管道的好处,这意味着图像在客户端计算机上的显示速度会稍快一些,因此这是一个额外的好处。
S3 也得到了备份,这意味着它是一个非常好的地方,可以在阳光下存储几乎所有的私人数据,除了你想提供给其他人的东西(尽管不要混淆这两者之间的权限设置事情——事实上,您可能希望完全使用单独的帐户)。
S3 也是近乎无限的,这意味着如果您想让用户将文件上传到您的站点(个人资料图片、附件等),S3 是一个不错的选择,这样您就不必经常担心服务器是否会运行用完磁盘空间(这里是强制性的 $$$ 警告)。
但就像我在顶部所说的那样,如果你是一个只有少数用户的服务器设置,那么这些都不重要。它和其他任何工具一样,可能还不是您需要的。
这只是一个简单的数字问题:给定一组文件的一定流量,您可以准确计算在 S3 上托管这些文件的成本,并且您应该能够为您当前的提供商做同样的事情。如果 S3 的数字较低,那么你有你的理由。
另一个好处是 S3 与流量几乎呈线性关系,您只需为实际使用的内容付费,而大多数提供商都会向您收取固定费用,无论您实际拥有的流量有多少,如果您超过固定费用中包含的最大流量。
更好的速度和可用性可能是一个额外的好处。
基本上,如果您的网站可能会产生非常不同的流量,那么将 S3 用于其图像和其他静态文件意味着如果您受到 Slashdot 效应的打击,该网站有更好的机会保持可访问性,并且您有更好的机会避免关于超额交通费的令人讨厌的意外。
Amazon S3 的优势在于可靠性、可扩展性、速度和成本。这是每个方面的一些信息。
可靠性:亚马逊将您的数据存储在多个数据中心。如果发生灾难并且一个数据中心被破坏,您的内容将继续从第二个数据中心提供。您上传到亚马逊的数据不太可能丢失。
可扩展性:如果您的某个网站变得流行并且数百万人访问该网站,您的网络服务器将无法处理负载。相比之下,当您将文件上传到亚马逊时,它们存储在多个位置。如果您的内容负载增加,您的文件会自动复制到更多服务器,因此您的文件将始终可用。
速度:亚马逊有一项名为 CloudFront 的服务,可与 Amazon S3 结合使用。当您在 S3 内容上激活 CloudFront 时,您的内容将移动到边缘站点。这些是使您的内容可用于高速传输的服务器。
成本:使用 Amazon S3,您只需按使用量付费。如果您有一些流量很少的文件,您每月只需支付几美分。
SprightlySoft 有一篇博文,其中给出了 Amazon S3 出色的更多理由。阅读http://sprightlysoft.com/blog/?p=8
如果您要托管一个高流量的网站,那么您自己托管图像的带宽成本(和延迟问题)会使 S3 和 Akami 等其他服务具有吸引力。对于低流量的网站,这可能不是问题。
我想说,如果您的基本托管计划提供足够的空间/带宽,那是没有理由的。我认为它有用的地方是当您的文件传输变得足够时,您必须考虑从提供商处购买存储/带宽的附加组件——在这种情况下,S3 可能是一个可行的替代方案。但是,如果我每月支付 X 美元并且没有使用所有存储空间,那么它没有任何好处。
另一方面,如果您的容量规划要求您在某天超出提供商的限制,那么 S3 可能从一开始就是一个很好的解决方案,这样您就不会从多个地方提供文件。
我会第二次提到“冗余”——您可以指望 S3 中的任何内容都分发到多个数据中心,并且任何具有正常网络连接的人都可以有效地随时访问。
成本可能是另一个因素:S3 的数据传输率非常具有竞争力。
速度是最后一个:您可以非常快地从 S3 访问数据。但这对于浏览器可见图像以外的数据来说是一个更大的问题。
对于小型网站,S3 或 Mosso 可能不适合图像托管,但如果您有任何视频文件(.wmv、.flv 等)或大型下载(应用程序分发等),我会如果出于某种奇怪的原因,您的内容变得非常受欢迎,仍然将它们放在 S3 或 Mosso 上以节省潜在的带宽峰值。
你写:
我的服务器有足够的磁盘空间,还是我完全错过了 S3 的意义?
如果您在服务器上拥有的是一次写入一次读取次数少于一次的东西,例如灾难恢复备份(您希望永远不会读取),那么您不会错过这一点,因为传输时间无关紧要。S3的重点是交付速度。
首先,S3 在地理上分发您的内容。最终用户受益于更短的路径。
其次,S3 可以充当 BitTorrent 种子,这不仅可以节省您的带宽,还意味着您最受欢迎的内容将被更快地分发,因为它可以利用 ad-hoc swarm。AWS 论坛上有报道称 S3 对 BitTorrent 协议的支持“非常非常参差不齐”。我自己没有测试过。
你们中的许多人不会有这个问题,但是如果您(和您的 Web 服务器)位于澳大利亚(阅读:互联网的第三世界),您会遇到 S3 没有地理位置接近的问题,这意味着您的图像和其他静态内容会有更高的延迟。可扩展:是的。快:没有。
据我所知,除了低成本之外,主要优势是从 EC2 设置中轻松备份。
速度可能是唯一的好处。如果您的专用服务器只是通过您的 ISP 联网(即使下行速度很高,它也可能会限制上行速度),那么您可能会发现您的站点通常加载缓慢。如果是这样,那么 S3 或其他专用服务器提供商可以提供帮助。除此之外,我想不出亚马逊的服务更适合你的理由——尤其是对于简单的静态网站。
它与您实际托管的网站并没有真正直接相关,但它肯定是其中的一个重要部分,特别是如果这些网站不属于您一个人 - S3 是一个很好的备份解决方案。有诸如duplicity之类的工具可以自动有效地为您将内容备份到 S3 上,并且为此目的非常便宜。我以每月不到 1 美元的价格备份大量数据。
除了 S3 的 Fat Pipe 和 Local Delivery 参数之外,当单个服务器同时作为数据库服务器和文件服务器运行时,它的运行方式也不是最佳的。如果您运行任何类型的数据库,我建议您将所有静态文件卸载到 s3。成本微不足道,您会在页面加载时看到相当大的性能提升。