承载非常高带宽的网站

我一直负责规划一个网站的基础设施要求,这个网站每个月要吸引超过1000万的独立访问者。 本网站将在内容明智的几个演出。 我知道所有的互动内容都将放在CDN上,但后端呢? 这个网站也将有一个CMS附加,这意味着任何双服务器设置将需要群集,我猜负载均衡。 只是想要你可能有的任何build议。

添加更多的细节。 我们很可能会使用webmux负载均衡器。

可悲的是,直到你去世,你才会知道要修理什么。 如果没有一些数据来支持你的决定,把钱放在正确的位置是非常困难的。 我推荐“容量规划的艺术”来了解你应该做什么来规划你的能力。 一般的规则是监视一切。 你想要graphics丰富。 如果你看不清哪里有什么问题,你就没有机会修复它。 不要把监控留到最后一刻。 我无法强调,了解您的网站目前的效果以及在过去的一天,一个月或一年中的效果如何重要。 我们使用munin来绘制图表,因为它起飞和运行起来非常快。 其他人使用Ganglia和仙人掌效果很好。

然而,你可以做很多事情来提高你的生存机会。

1)复制一切。 许多。 您希望能够向存在问题的地方添加更多的硬件。 您不想购买更大的硬件来replace速度太慢的硬件。 查看负载均衡您的应用程序服务器。 看看使用主/从数据库设置,其中读取来自你的奴隶,并写入你的主人。 你说过你在CDN上存储大多数媒体。 好。

2)避免在数据库中存储瞬态的任何内容。 数据库对于临时数据来说太慢了,而您希望它们为其他请求提供服务。

3)尽可能避免服务器端状态。 在服务器端状态下,你将不得不在Web服务器之间进行某种共享会话复制,限制你添加更多硬件的能力,或者你需要使用粘性会话,这将会起作用,但是会导致不均匀的负载和会话死亡如果你的服务器死亡。

4)caching一切。 使用memcachedcaching数据库和应用程序之间的数据。 如果您存储了多个查询结果的数据,则会更有效。 在您的Web层前使用caching。 像apache的mod_cache或squid在反向代理模式。

5)configuration您的网站。 find它的速度缓慢。

6)分析你的HTML。 用户在Web上感知到的缓慢的大部分在前端。 高性能网站有很多有用的技术。 雅虎的YSlow Firefox扩展也很有用。

我可以推荐构build可扩展网站和高可扩展性博客。

有很多select。 我用于类似情况的一些技术是:haproxy用于负载均衡,nginx和lighttpd用于静态内容,代理caching用varnish,服务器间高可用性心跳。 我仍然保持apache服务与cms发布静态HTML文件的dynamic内容,并试图避免连接到数据库的前端。

你知道,具体取决于你在做什么…一个简单的方法可能是利用像Amazon的CloudFront服务:

http://aws.amazon.com/cloudfront

Amazon CloudFront是用于内容交付的Web服务。 它与其他amazon web services集成在一起,为开发人员和企业提供了一种简单的方式,以低延迟,高数据传输速度和无承诺向最终用户分发内容。

Amazon CloudFront使用边缘位置的全球networking提供您的内容。 请求您的对象自动路由到最近的边缘位置,所以内容交付与最佳的performance。 Amazon CloudFront可以与Amazon Simple Storage Service(Amazon S3)无缝协作,它可以持久存储您的文件的原始版本。 和其他amazon web services一样,使用Amazon CloudFront也没有任何合同或每月承诺,您只需支付与实际通过服务交付的内容一样多或一点点的内容。