在Amazon Web Services上托pipe图像托pipe网站

我正在做一个图像托pipe服务。 这是我第一次build立一个大的网站,所以我没有太多关于创build一个可靠的Web服务的知识,但我想我已经明白了。

我应该如何设置我的网站托pipe容纳大量的stream量? 这就是我的想法。 告诉我,如果这是一个好主意:

  1. select任何有php和mySQL的廉价供应商。
  2. 只存储在那个便宜的提供商(PHP脚本,服务器configuration文件,SQL数据库)后端的东西。
  3. 使用Amazon S3来存储所有前端的东西,比如css,js,图片,当然还有所有用户上传的图片(这是一个图片托pipe网站)。

那样有用吗? 这意味着大量stream量的成本都是通过Amazon S3完成的,对吧? 廉价的供应商不应该受到任何重大成本的打击,因为它所做的只是运行脚本和更新数据库? 或者也会加起来(慢慢跑)?

我应该将数据库移到Amazon SimpleDB吗? 我也听说我可以使用Amazon EC2运行该网站,但是看起来这需要很多工作来设置(并且是昂贵的)。 我想我所问的可以概括为:什么是可靠地运行图像托pipe网站最具成本效益的方式?

谢谢。

所以,这里有几点可以帮助你。

  1. 提供者:对于大多数前端方面来说,如果成本是你的主要因素,那么你需要找出适合你需求的提供者。 可靠性,成本和缩放比例都是您需要考虑的因素。
  2. 请注意,除非你有用户下载某种客户端程序(Flash,JS等),你的服务器将不得不接收文件,然后将其上传到S3。 这将导致大量的负载以及带宽成本。 但是,它也会使您更好地控制“可以上传什么”以及如何上传。 一旦你把控制权交给客户,你将无法真正控制上传的内容。
  3. S3非常适合存储静态内容,它将是创build类似这样的网站并保持成本的关键。 确保你正确地控制谁上传了哪些桶的权限。 例如,如果您在一个存储分区中安装了css和javascript,则只有您可以上传到该位置,否则恶意用户可能会上传一些恶意文件来replace您的内容。 另一方面,如果您打算允许用户直接上传内容以节省带宽,则必须确保这是一个单独的存储桶,理想情况下是每个用户。 这不是微不足道的执行,几乎不可能,如果你提供客户直接上传访问。

根据您的上传configuration(客户端客户端与服务器端客户端),您的需求会有所不同。 客户端对于服务器成本来说会更便宜,但是要注意,有人可能会find一种方法来存储任何types的文件,并且您将负责调节该内容。 对于服务器端模型,请准备好随着用户stream量增加服务器成本,因为您需要构build更多服务器来处理上载请求。

托pipe内容后,您还需要查看CDN(内容分发networking),如Amazon的CloudFront(如果您想留在亚马逊堆栈上)或Akamai Networks。 这些会首先增加你的成本,但是为你节省大量的使用内容。

Amazon SimpleDB是一个有趣的数据库风格。 这是“最终一致”,这意味着发送到数据库的数据可能无法立即访问,类似于Amazon S3。 如果您要使用数据库作为保持多个节点上的数据同步的许多实时事务的方式,我不会推荐它。

运行大规模图像(或任何其他)托pipe网站的最具成本效益的方法不是运行一个 – 如果您达到任何级别的stream行度,单靠带宽成本将是天文数字。

所有人都说,我会先testing一些商品虚拟专用服务器主机上的水域( vps.net , linode.com等 – 不是代言,谷歌周围)。 如果你的发展速度足够快,而且看起来至less可以达到成本,那么你可以扩展到像你所描述的那样。


从架构的angular度来看,我会build议,如果你要“进入云端”,就要一路走下去 – 如果数据不在前端“附近”,数据来回传递到后端系统将会变慢,我相信云提供商是非常慷慨的带宽,不离开他们的networking。
还要从最近的Amazon EBS相关故障中吸取教训,并确保您在基于云的服务中具有适当的冗余级别。 当你失去所有的家庭照片时,顾客往往会发出愤慨的声音:-)