多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 扩展 BBC iPlayer 的 6 种策略 > 原文: [http://highscalability.com/blog/2010/9/28/6-strategies-for-scaling-bbc-iplayer.html](http://highscalability.com/blog/2010/9/28/6-strategies-for-scaling-bbc-iplayer.html) 英国广播公司(BBC)的 iPlayer 网站平均每天有 130 万用户浏览 800 万次页面。 技术架构师 Simon Frost 在[中描述了他们如何扩展站点,将 BBC iPlayer 缩放以处理需求](http://www.bbc.co.uk/blogs/bbcinternet/2010/07/scaling_the_bbc_iplayer_to_han.html): 1. **使用框架**。 框架支持基于组件的开发,这使其便于团队开发,但是会引入必须最小化的延迟。 使用 Zend / PHP 是因为它支持组件且易于招募。 MySQL 用于程序元数据。 CouchDB 用于键值访问,以快速读取/写入以用户为中心的数据。 2. **在构建架构之前先对其进行验证**。 通过提出其他架构来消除猜测,并创建原型以确定哪个选项最有效。 在性能与易于开发等因素之间取得平衡。 3. **缓存很多**。 数据会在 memcached 中缓存几秒钟到几分钟。 较短的缓存失效期使用户的数据保持最新,但是即使这些短暂的时期也会在性能上产生巨大差异。 缓存不必花很长时间才能看到好处。 Varnish 用于缓存 HTML 页面。 大多数无效是基于时间或基于动作的(例如,有人添加了新的收藏夹)。 4. **将页面分为个性化和标准组件**。 创建一个公共主页,以便可以将其与个性化数据分开进行缓存。 这样可以提供更快,更流畅的观看体验。 使用 Ajax 加载个性化元素。 Varnish 的灵活缓存策略用于缓存这些元素。 用户收藏夹列表仅缓存几分钟。 5. **使用大量服务器**。 使用服务器池可横向扩展。 Web 服务器是无状态的。 页面由两个数据中心提供,以实现高可用性。 6. **在启动**之前测试站点。 加载测试以在用户看到问题之前跟踪并修复问题。