大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 高昂 发布于 2008年1月15日
基于Rails框架应用开发的普及,在为用户带来众多创造性应用的同时,也赋予了开发者令人兴奋的高效与快捷体验。使用Rails开发Web应用的最后一个步骤,是要把Ruby代码从开发测试环境中迁移到实际生产模式之下。相比于开发过程来说,应用的部署并非易事。如何保证部署后站点的稳定和健壮性,并且可以从容应对大规模的并发访问,每一位富有经验的开发者或许都有自己的一套途径,就此,InfoQ中文站汇总了近期Rails部署问题的各方面观点,为您提供参考。
早在Rails应用普及之初,就时常会听见针对Rails部署问题的抱怨。对于PHP,一直以来都是以成熟的LAMP模式进行部署,讨论主要是集中在如何有效的进行服务器规模的拓展等等。而Rails方面则是没有统一的规则,Web服务器的组合方式和部署工具也都有各自的特色,应用的部署对开发新手来说,是个常会产生困惑的问题,在题为“我不喜欢RoR的原因”的帖子中,一位开发者提到:
RoR无疑是目前最具生产效率的开发框架之一,实现同样的应用,确使得开发时间缩减到原先的一半。但令我感到困扰的是,RoR对于开发者的确具有吸引力,但客户却并不这么认为。比方说,Rails应用的部署方式非常复杂,客户并不熟悉如何将开发好的应用部署在自己的服务器上,并且他们不喜欢使用命令行和脚本来操作Rails应用。
的确,相比PHP应用LAMP模式的部署,Rails的可选方案非常多。保持站点的稳定性和健壮性,所涉及的不仅仅是Rails或Ruby开发相关的技术,还有很多因素来自于Web服务器和应用服务器的选择与搭配。Rails部署常见的架构中,前端服务器加多个进程处理的方式如Fastcgi,Mongrel的选择以及与Web服务器的搭配使用,往往会给用户造成困扰。在《应用Rails进行敏捷Web开发》一书中,对于Rails的部署过程也作了简单的描述,但是所提供的部署方式并不十分合适于大规模网站的并发访问。论坛里的讨论中,常会针对于Lighttpd+FastCGI、Nginx+Mongrel、Apache+FastCGI等不同的搭配模式展开讨论。对于Mongrel服务器,Robbin在文章“RoR部署方案深度剖析”中评价道:
我们假设使用服务器端程序控制带权限的文件下载,某用户下载的是一个100MB的文件,该用户使用了多线程下载工具,他开了10个线程并发下载,那么每个线程Mongrel在响应之后,都会把整个文件读入到内存的StringIO对象当中,所以总共会创建出来10个StringIO对象保存10份文件内 容,所以Mongrel的内存会一下暴涨到1GB以上。而且最可怕的是,即使当用户下载结束以后,Mongrel的内存都不会迅速回落,而是一直保持如此 高的内存占用,这是因为Ruby的GC机制不好,不能够及时进行垃圾回收。
对此,robinlu根据自己的Rails部署经验写道:
Mongrel处理rails request和静态文件使用的是不同的handler。处理静态文件用的是DirHandler,DirHandler没有通过调用response的start方法使用到StringIO,而是直接调用了response的send_file方法,直接write socket。验证过程非常简单,自己起一个mongrel,在public下放一个100M的文件,通过浏览器下载一下。在我的mac上,本来是76M的mongrel,在下载结束后是74M,下载过程中也一直小于80M,最低到过68M。无论是过程中还是结束后,都没有出现占用内存暴涨的现象。
的确,针对Rails部署的Web服务器与应用服务器的搭配方案,会令客户面对众多的选择,并且JVM之上的JRuby以及微软.Net平台上的Ruby运行环境,都可能会使得Rails的部署呈现多元化发展的趋势。Robbin在文章中对于JavaEye站点部署方案的选择做出了如下的总结:
Lighttpd+FastCGI是性能最佳,服务器资源消耗最少的RoR部署方案,事实上目前RoR网站部署使用最多最流行的也是Lighttpd+FastCGI方式,而JavaEye网站,自然也是这种方式的部署。因此我们可以对各种方案进行一个性能优劣的排队,即Lighttpd+FastCGI是性能最佳方案,而Apache+FastCGI是性能最差方案。
从设计架构上来说,对静态文件的处理应尽量由Web服务器前端处理,避免多线程下载对cpu和带宽的影响。搭配的方式有很多,方案选择的优劣也不能一概而论,需要根据具体情况做出最合适自身的选择。在InfoQ中文站之前的一篇新闻“与时俱进的轻量级Web服务器”中,也解释了Lighttpd+FastCGI成为目前Rails网站优秀部署方案的原因。对于各种选择和经验之谈,毕竟是仁者见仁、智者见智的事情,但无疑,关注小型轻量级服务器的发展,及其自动化部署工具和一站式集成化生产环境,都会给应用的部署上线带来有益的帮助。
关于应用服务器部署的更多信息,可以在InfoQ中文站的部署或应用服务器相关主题,以及ChinaonRails的服务器架构讨论区中详细了解。
高昂 是IEEE-CS、CCF会员,博士研究生,关注开源软件发展与进步。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
没有回复
关注此讨论 回复