大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 田乐 发布于 2007年7月31日
IBM developerWorks网站上最近发布了一则Cameron Laird的关于轻量级Web服务器的文章,里面列举了很多的轻型的Web服务器实现和它们的特点,Cameron还从自己的经验出发总结了评价Web服务器的一些指标。这篇文章目的在于扩展我们在Web应用部署时的思路,让我们重新思考Web应用的架构和部署方案。众多的轻量级Web服务器其实见证了动态脚本语言实现Web应用的火爆,给实现Web应用提供了更多解决方案。
轻量Web服务器这个概念关注“轻巧性”,这意味着简单、易于安装、流线化、要求低和健壮。这种“轻巧”主要是相对于目前市场占有率占优的Apache和IIS而言的,轻量Web服务器应该更小更简单,并且它们至少要有一些性能/特性超过这两个产品(这样它们才可能分得市场份额)。Cameron这样对比了“轻量”相比“重量”的一些优势:
轻量级Web服务器可以适用于市场领头产品和其他“重量级”服务器无法胜任的情况。例如,整个服务器可以打包在一个文件中。这意味着开发人员可以方便地携带生产环境所需的所有工具。即使在生产服务器上运行的是 Apache,也仍然可以在宾馆的房间里,借助只需数秒钟就可以安装完毕的轻量级Web服务器以尝试新想法。而且,由于轻量级Web服务器要求很低,因此可以在那些无法负担IIS的主机上顺畅地运行。
我们关注一下目前的Web服务器占有率情况,Netcraft在它2007年7月的Web服务器调查中的服务器占有率数据如下:
| 开发者 | 2007年6月 | 百分比 | 2007年7月 | 百分比 | 变更率 |
|---|---|---|---|---|---|
| Apache | 65588298 | 53.76 | 66144734 | 52.65 | -1.11 |
| Microsoft | 38836030 | 31.83 | 41257913 | 32.84 | 1.01 |
| 4872765 | 3.99 | 5465538 | 4.35 | 0.36 | |
| Sun | 2273173 | 1.86 | 2245493 | 1.79 | -0.07 |
| lighttpd | 1470930 | 1.21 | 1471779 | 1.17 | -0.04 |
| Zeus | 480698 | 0.39 | 463449 | 0.37 | -0.02 |
其中Apache占有率最高,它是公认的稳定、性能优良、开发者活跃的开源软件产品。而Microsoft则受益于Windows平台内置的PWS和IIS的优势及.NET平台的市场占优率,占有第二的位置。Sun则是由于历史问题,它的iPlanet、SunONE和一并计算的Netscape-Communications产品还能跻身前4。后面的lighttpd则是轻量型Web容器的代表,已经超过了老牌的商业Web服务器Zeus(ServerWatch给出了一个lighttpd市场占有率上升的分析),主要因为一些AJAX项目和Ruby on Rails(以下简称RoR)的流行对它的广泛部署起了推波助澜的作用。
轻量Web服务器除了lighttpd还有mongrel也经常被提及,主要因为它们是RoR项目的两种主要部署方案。JavaEye的创始人Robbin Fan曾经在它的blog中对比过RoR的这两种部署方案:
(RoR项目)用fcgi方式还是http方式,我个人觉得区别不大,关键还是看应用的场合,一般而言,推荐的搭配是lighttpd+fcgi 或者nginx+mongrel,而Apache因为性能差距,而不被推荐。
lighttpd+fcgi是大量使用脚本语言编写的网站的首选部署方案,Robbin Fan在同一篇文章中阐述了他选择lighttp部署JavaEye的理由:
JavaEye为什么用lighttpd+fcgi呢?原因如下:1) lighttpd发展了好几年了,市场占有率也相当高,是一个经过实践检验的server,它的文档也很全;
2) JavaEye的Ruby进程和Web Server在一台机器上面跑,通过unix socket使用fcgi协议通讯可以避免tcp的网络开销,其通讯速度比使用tcp socket使用http协议通讯要快一些。
Robbin选择lighttpd的主要原因是性能好于Apache。并且Apache目前的fastcgi模块有些bug,而对于像RoR这样的项目fastcgi是一种很好的部署方式,所以Apache就因此失去了这块份额。最近InfoQ报道过的RubyWorks提供的RoR工作栈中选择了Haproxy+mongrel的方式,这也是前面引用的Robbin所说的另外一种部署方案。mongrel本身可以跑Ruby进程,同时也是一个http服务器,它可以兼顾动态和静态Web服务,配合Haproxy做负载均衡就可以支持大并发量的Web应用,所以它越来越流行了。
可见轻量级Web服务器由于性能/特性上的一些优势,开始逐渐瓜分Apache、IIS所没有照顾到的一些新兴的市场分额。那么如何去评价一个Web服务器呢?Cameron给出了如下的一些重要指标:目前越来越多的轻型Web服务器开始在上面的一个或着多个方面向Apache和IIS提出了挑战,因为很难有一个Web服务器可以做到面面俱到。我们可以从Cameron提供的一份列表里面看到一些选用轻量级Web服务器的成功案例:性能:对请求作出响应的速度有多快? 可伸缩性:当很多用户同时访问它时,服务器还能继续可靠地运行吗? 安全性:服务器是否只执行它应该执行的操作。它在认证用户和加密传输方面提供了怎样的支持?它的使用是否使附近的应用程序或主机变得更易受攻击? 可靠性:服务器的失效模式和故障发生率如何? 标准遵从性:服务器遵从相关的 RFC 吗? 灵活性:是否可以对服务器进行调优,以支持较重的请求负载、需要计算的动态页面或者代价不菲的认证等等? 平台需求:该服务器可用于哪些平台?它是否有特定的硬件需求? 易管理性:服务器是否易于设置和维护?它是否与日志记录、审计、成本计算等组织标准兼容?
YouTube依靠lighttpd快速交付归档的内容,例如视频; cdServe运行 “German Woodworking Machinery and Tools” CD; LiteSpeed宣扬它在 twitter、www.funnyoride.com、www.airliners.com、WordPress.com、 fanfiction.com、SlashGear、www.forumactif.com 和其他著名Web 站点上担任的角色; OpenSUSE、RubyOnRails、MarkaBoo和其他一些著名站点依赖于Mongrel; demon.net、bluelight.com、mtv.com、The Drudge Report、garfield.com等站点则使用thttpd;
上面的例子中有一些使用RoR的网站的例子,Cameron指出不仅是网站可以使用常规以外的其他编程语言。“不常见”语言还可以被用来实现轻量Web服务器,例如Erlang、Java、Lisp、Lua、Perl、Python和Tcl。用这些语言实现的轻量级Web服务器不一定只是在性能/特性上超过Apache和IIS,它们可以提供例如容易嵌入、体积轻小这样的特性来吸引开发者的使用。Cameron给出了使用“不常见”语言编写轻量级Web服务器的原因:
教学:使用轻量级Web服务器来制定一个重要、但是并不太大的目标。这是获得使用某种语言的经验的好方法。 虽然用C编写的轻量级Web服务器大小为10-50KB,更高级的语言有100KB到数MB的运行时,但整个 Web 服务器的源文件可能只占几千个字节。这种Web服务器占用的空间很小,因此比Apache更易于与技术伙伴共享。 更高级的语言可以使实验更吸引人 —— 例如,添加一个新的HTTP/1.1特性可能只需几行源代码。这些轻量级服务器是非常方便的实验材料。 将HTTP服务器添加到已有的、用高级语言编写的应用程序中只需增加几行源代码。 如前所述,不同的轻量级Web服务器有着不同的优点,它们或多或少独立于编程语言。所有轻量级Web服务器都比Apache更小、更易于配置。与Apache相比,有些轻量级 Web 服务器更快,有些则快得多。有些则强调安全性、重负载下的从容性、可扩展性或者内存占有量。在任何情况下,都可以以一种不适用于 Apache 的方式彻底地理解这些服务器。
这些理由从另外一个方面说明了轻量级Web服务器的优势,Cameron还提供了一长串的轻量级Web服务器的列表和简介,感兴趣的读者可以认真阅读,从中寻找到您感兴趣的实现。轻量级Web服务器不只是Apache、IIS的竞争者,也是很好的合作者(例如我们经常可以见到关于mongrel与Apache配合使用的文章),现在我们还可以看到很多服务器协作部署的例子,各取所长应该是最佳的选择,所以我们更应该从现在就开始拓宽眼界,寻找我们所需要的。
最后,推荐对Web服务器感兴趣的读者可以使用Netcraft提供的Webserver Search的服务器查询功能来探索你感兴趣的网站的服务器,Webserver Search可以报告搜索的url对应的服务器的操作系统和Web服务器类型,是设计部署方案的一个很好参考。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey 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。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
3 条回复
关注此讨论 回复