托管非常高带宽的网站

托管非常高带宽的网站

我的任务是确定一个网站的基础设施要求,该网站每月将吸引超过 1000 万的独立访客。这个网站的内容大小将达到几 GB。我马上就知道所有交互式内容都将放在 CDN 上,但后端呢?这个网站还将附加一个 CMS,这意味着任何双服务器设置都需要集群化,我猜也需要负载平衡。只是想听听你们的任何建议。

补充更多细节。我们很可能使用 webmux 负载均衡器。

答案1

遗憾的是,在上线之前你不会知道该修复什么。如果没有一些数据来支持你的决定,就很难把钱花在正确的地方。我建议容量规划的艺术了解您应该做什么来规划您的容量。但一般规则是监控一切。您需要大量的图表。如果您看不到哪里出了问题,您就没有机会修复它。不要把监控留到最后一分钟。我再怎么强调也不为过,了解您的网站目前的表现以及过去一天、一个月或一年的表现是多么重要。我们使用 munin 来绘制图表,因为它可以非常快速地启动和运行。其他人使用 Ganglia 和 Cacti 效果很好。

然而,你可以通过各种方法来提高生存的机会。

1) 大量复制所有内容。您希望能够在出现问题的地方添加更多硬件。您不想购买更大的硬件来替换速度太慢的硬件。查看应用程序服务器的负载平衡。查看使用主/从数据库设置,其中读取来自从服务器,写入来自主服务器。您说过您将大多数媒体存储在 CDN 上。很好。

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

3) 尽可能避免使用服务器端状态。使用服务器端状态时,您必须在 Web 服务器之间进行某种共享会话复制,这会限制您添加更多硬件的能力,或者您需要使用粘性会话,虽然这可以工作,但如果服务器死机,可能会导致负载不均衡和会话死亡。

4) 缓存所有内容。使用 memcached 在数据库和应用程序之间缓存数据。如果存储的是多个查询的结果数据,则效率会更高。在 Web 层之前使用缓存。例如 apache 的 mod_cache 或反向代理模式下的 squid。

5) 分析您的网站。找出速度慢的地方。

6) 分析你的 html。用户感知到的网页速度缓慢很大一部分是前端造成的。高性能网站有很多有用的技巧。Yahoo 的 YSlow Firefox 扩展也很有用。

我可以推荐 构建可扩展的网站高可扩展性博客。

答案2

有很多选择。我针对类似情况使用的一些技术包括:haproxy 用于负载平衡,nginx 和 lighttpd 用于提供静态内容,varnish 用于代理缓存,heartbeat 用于服务器之间的高可用性。我仍然保留 apache 来提供动态内容,cms 发布静态 html 文件并尝试避免在前端连接到数据库。

答案3

您知道,这取决于您具体在做什么……一种稍微简单的方法可能是利用类似亚马逊的 CloudFront 服务:

http://aws.amazon.com/cloudfront

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

Amazon CloudFront 使用全球边缘站点网络交付您的内容。您的对象请求将自动路由到最近的边缘站点,因此内容将以最佳性能交付。Amazon CloudFront 可与 Amazon Simple Storage Service (Amazon S3) 无缝协作,后者可持久存储文件的原始最终版本。与其他 Amazon Web Services 一样,使用 Amazon CloudFront 无需签订合同或每月承诺 – 您只需为通过该服务实际交付的内容支付费用。

答案4

对于负载平衡,我还强烈建议:

相关内容