我曾经在一些网站上工作过,他们有两台服务器:一台专门用于提供 php 网页,另一台专门用于提供图像、flvs、mp3 等媒体。当你在http://www.mysite.com,你会看到类似这样的代码 (img src="http://images.mysite.com/helloworld.jpg" ),其中http://images.mysite.com与 www.mysite.com 是不同的物理服务器。
假设我必须重新创建一个现有网站,该网站目前没有单独的媒体和 Web 服务器。现有网站在做 YouTube 方面做得很差。现有网站相当受欢迎,每天有 2000 名 UV 访问者,每月传输量为 250 GB。在重新创建网站时,我是否应该计划拥有单独的媒体服务器?我是否应该计划拥有 2 个负载平衡的前端服务器?或者这是一个“按需构建”的场景?
答案1
(当您将其移至 ServerFault 时,我正要提交 stakoverflow 上的答案:-))。
基本思想是,您希望优化不同的服务器以出色地完成一件事。例如,如果您有一个运行代码/存储状态等的应用服务器,您希望为此目的优化您的硬件 - 即良好的 CPU 和大量内存。
另一方面,您不希望服务器也将其资源用于存储文件等日常事务。您可以拥有另一台(媒体)服务器,它只是一个提供静态文件的更简单的服务器,并且有一个巨大的网络管道与其相连(因为这是可能的)。
这也使您能够更好地扩展 - 您可以扩展您的应用服务器,即计算量大的部分,与哑部分(提供内容的部分)分开。这样,例如,如果您有相同数量的用户突然开始在您的网站上花费更多时间并观看更长的视频,您可以增加媒体服务器的数量,而不必担心您的应用服务器。
所以,就给你的建议而言,我建议你看看你的基础设施、你的时间框架,以及你预计你的网站还会增长多少。如果你认为你的网站会增长 10 倍或 100 倍,那么可能值得考虑更长远的未来,在这种情况下,拥有专用服务器将是一个好主意。弄清楚实现这一目标的难度有多大,以及你是否可以朝着这个目标迈出一小步(即确保所有媒体都在单独的文件夹中,并且所有链接都是程序化的 - 即轻松重新指向另一台服务器等)。
答案2
就您的情况而言(您在 YouTube 克隆版中提供用户提供的内容),最令人信服的理由可能是缓解 Flash 的各种跨域安全策略问题。如果不为您的媒体使用单独的物理服务器,则应考虑从单独的域提供媒体。请参阅以下说明,包括如何在实践中利用这一点:
- http://www.jamesward.com/2009/11/08/how-bad-crossdomain-policies-expose-protected-data-to-malicious-applications/
- http://www.foregroundsecurity.com/MyBlog/flash-origin-policy-issues.html
- http://code.google.com/p/doctype/wiki/ArticleFlashSecurityPolicyAttack
以下是关于 Facebook 和 MySpace 的一个相关故事:
答案3
我不擅长这些东西,但几个月前我在规划我的网站(仍在开发中)时检查过它。据我记得,你想要因为
一个域名只能有 2 个连接。子域名允许更多连接,因为它们是“不同的”网站。一个连接用于主页,另一个用于 XMLHttpRequest
专用服务器。您可以拥有一个服务器来保存所有媒体,另一个服务器来处理上传或处理涉及数据库的所有内容。如果您愿意,可以使用不同的域名将其指向专用服务器
优化。除非点击次数很多,否则不需要优化。如果您的网站有 Cookie,浏览器每次请求页面时都会发送 Cookie。如果您必须在一两个页面中加载数千张图像,浏览器每次都会发送 Cookie(如果图像很小,可能无关紧要。但有些网站的 Cookie 很大)。使用没有 Cookie 的其他域可以加快速度。