在 Amazon Web Services 上托管图片托管网站

在 Amazon Web Services 上托管图片托管网站

我正在制作一个图片托管服务。这是我第一次建立一个大型网站,所以我对创建可靠的网络服务没有太多了解,但我思考我已经弄清楚了。

我应该如何设置我的网站托管以容纳大量流量?这就是我的想法。告诉我这是否是一个好主意:

  1. 选择任何拥有 php 和 mySQL 的廉价提供商。
  2. 仅将后端内容存储在廉价提供商上(php 脚本、服务器配置文件、sql 数据库)。
  3. 使用 Amazon S3 存储所有前端内容,如 css、js、图像,当然还有用户上传的所有存储图像(这是一个图像托管网站)。

这有效吗?这意味着大量流量产生的成本全部通过 Amazon S3 完成,对吗?廉价提供商不应该承受任何重大成本,因为它所做的只是运行脚本和更新数据库?还是这也会累积起来(并且运行缓慢)?

我是否应该将数据库移至 Amazon SimpleDB?我还听说我可以使用 Amazon EC2 运行网站,但看起来这需要大量工作来设置(而且很昂贵)。我想我的问题可以概括为:可靠地运行图片托管网站的最经济有效的方式是什么?

谢谢。

答案1

因此,以下几点或许能帮到你。

  1. 提供商:对于大多数前端方面而言,如果成本是您的主要考虑因素,那么您需要自行确定哪个提供商适合您的需求。可靠性、成本和扩展性都是您需要考虑的因素。
  2. 请注意,除非您让用户下载某种客户端程序(Flash、JS 等),否则您的服务器必须接收文件,然后将其上传到 S3。这将产生大量负载以及带宽成本。但是,它也会让您更好地控制“可以上传什么”以及如何上传。一旦您将控制权交给客户端,您将无法真正控制上传的内容。
  3. S3 非常适合存储静态内容,它是创建此类网站并控制成本的关键。请确保正确控制谁有权上传到哪个存储桶。例如,如果您将 css 和 javascript 放在一个存储桶中,则只有您才能上传到该位置,否则恶意用户可能会上传一些恶意文件来替换您的内容。另一方面,如果您要允许用户直接上传内容以节省带宽,则必须确保这是一个单独的存储桶,最好是每个用户一个。这很难执行,如果您向客户端提供直接上传访问权限,则几乎不可能。

根据您的上传配置(客户端客户端与服务器端客户端),您的需求会有所不同。客户端的服务器成本会更便宜,但请注意,有人可能会找到一种方法来存储任何您将负责审核此类文件,并负责审核该内容。对于服务器端模型,请准备好让您的服务器成本随着用户流量的增加而增加,因为您需要构建更多服务器来处理上传请求。

托管内容后,您还需要研究 CDN(内容交付网络),例如 Amazon 的 CloudFront(如果您想继续使用 Amazon 堆栈)或 Akamai Networks。这些一开始会增加您的成本,但可以为您节省高使用率内容的费用。

Amazon SimpleDB 是一种有趣的数据库样式。它具有“最终一致性”,这意味着发送到数据库的数据可能无法立即访问,类似于 Amazon S3。如果您打算使用数据库作为在多个节点之间保持数据同步以进行许多实时事务的一种方式,我不推荐它。

答案2

运行大型图片(或任何其他)托管网站的最经济有效的方法是不运行一个-- 如果您达到任何级别的知名度,单是带宽成本就将是天文数字。

话虽如此,我还是会先在一些商品虚拟专用服务器主机上试水(vps.netlinode.com等。——不是代言,谷歌一下)。如果你发展得足够快,而且看起来你至少可以收回成本,那么你可以扩展到你所描述的场景。


从架构的角度来看,我建议如果你要“进入云端”,就应该全力以赴——如果数据不在“靠近”前端,那么将数据来回推送到后端系统会比较慢,而且我相信云提供商在不离开其网络的情况下提供带宽方面相当慷慨。
此外,还要从最近的 Amazon EBS 相关中断中吸取教训,确保你的基于云的服务具有适当的冗余级别。当你丢失了所有的家庭照片时,客户往往会发牢骚 :-)

相关内容