大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 张凯峰 发布于 2009年9月27日
近日,Jevgeni Kabanov公布了一份几个月前做的关于JavaEE开发、容器和部署时间的调查结果。结果显示有超过1100人参加了这次问卷调查。这里是下载版的问卷结果。而下面是Jevgeni作出的针对每个问题答案分析的摘要。
问卷的第一个问题是:“你在目前参与的最大型项目中使用的是什么容器?”
图表1:哪个容器是最常使用的?

这里没有包括那些得分不到10分的容器。毫无悬念,Apache的Tomcat占据了头把交椅,而JBoss紧随其后。开源的服务器占到了70%的比例。虽然不能把这样的比例直接等同于容器们的市场份额,但这样的结果跟SD Time作出的研究结果有异曲同工之妙,在他们的调查中允许人们选择多个容器。
第二个问题是:“重启你的容器并重新部署应用要花费多少时间?”
图表2: “重启你的容器并重新部署应用要花费多少时间”(横轴是分钟)

这样,计算出平均时间在2.5分钟左右,这跟事先评估的大概1分钟相去甚远。
第三个问题:“编码一个小时,你会重新部署几次?”
图表 3:“编码一个小时,你会重新部署几次?”

对于那些回答“我不需要重新部署”的人,我们询问了他们是如何做到的,答案有以下这些:
接着,我们做了一下数据处理。用一个数字代表次数间隔(比如3.5次代表3-4次),并把每小时的部署次数与一次重新部署所费时间相乘(基本上就是图2和图3相乘),这样就得出了在开发过程中每小时会花费的重新部署时间:
图表4:“ Java开发者在一个小时编码过程中,花费多长时间来重新部署(原始数据)?”

平均时间是12分半,占到了整个开发时间的20%还多点。然而,标准差超过14,这意味着真实的比例变化很大。我们想要显示出更加精确的数据,在分析过参与调查的人们在每个答案上的选择所产生的比例数据后,我们得到了更新后的图表:
图表5:“ Java开发者在一个小时编码过程中,花费多长时间来重新部署?(更加精确的数据)”

这样,平均时间就是10.5分钟,标准差是8,这样的数据更令人信服。这个时间占据了全部开发时间的17.5%,这远比我们预期的要高。这些干净的数据也将用作接下来的分析。
接着,我们基于每个容器进行了数据分析。下面是我们所发现的:
图表6:每个容器要花费多少时间来重新部署?

可以看到,Jetty最快仅需要5.8分钟,而IBM的WebSphere排在了末尾,时间几乎是Jetty的两倍还多。但需要注意的是,虽然Jetty启动时间要比WebSphere要看,但最大的不同很可能是因为部署的应用规模和其中使用到的技术。
接下来,我们拥有了几乎一模一样的图表,但数字显示的是开发时间的一个比例。
图表7:每个容器中,花在重新部署上的开发时间比例是多大?

下面这张图,显示了按40小时每周的时间算,每年要消耗在重新部署上的周数对比。
图表8:每年有多少个40小时周被花费在了重新部署阶段上?

这个数据的平均值是每年5个工作周多一点,但标准差4使得3-7的范围更加可信。
最后一张图表显示了每个容器上所费重新部署时间更加详尽的比例。我们期望这样能显示出使用不同容易的项目规模,从而能让读者大概弄清楚自己的项目会花费多少时间在重新部署上。
图表9:: Java EE容器市场渗透率

我们会这样诠释这幅图表:
张凯峰 InfoQ中文站编辑,有多年软件开发和测试经验,热衷参与技术社区与技术传播。
难道Java的利器就是重启??
我每天都要等Java程序员重启容器很长时间,如果Java天生具有这种特性,还不如不用.
目前正在头痛这个问题。
作为Java程序员,大都是做WEB开发,天天在编码中花费在容器重部署和重启时间占了很多,时间是宝贵的,特别是现在倡导敏捷快速的时代,希望这样的情况以后能有所改善。
当项目发展到重启一次Web容器要消耗5分钟的时候, 那就已经很难接受了。同时在等待Web容器启动的过程中,被大量消耗的硬件资源, 使得人力和硬件都处于等待的空闲过程中,确实浪费了大量的生产力.
如果能灵活、快捷的去掉本次开发所不依赖的模块,那么启动速度会改善很多.
当然,更有效的肯定是从控制代码、项目的规模入手 才是易于未来维护的根本。完全寄托于WebContainer自身的提速,肯定是不靠谱的。
如果单元测试做的足够的话,直到最后做功能测试才需要去启动服务器。
可是某些程序员说代码"被单元测试"了,问题一大堆,没事干重启.
为啥IIS就不要重启,我很费解,谁出来说说??
java容器启动要加载很多框架
在不使用其它框架的前提下,启动好像也只需要几秒钟。。
我接触到的大部分团队,开发、生产使用的容器是不一样的。通常开发使用tomcat,生产使用WebSphere或者WebLogic。
如果像这个一样放在一起统计,显然是不合适的。
另外我觉得如果出现频繁部署的情况,说明系统设计不够合理,开发过程控制也比较差。
统计还是有意义的。
即使测试驱动开发,也很难保证全部按照安排来一步步走。
尤其现在经济不好,公司必须利益最大化,省略掉其他的必要步骤,测试完全被抛除在绩效之外,完全以实现功能为主。
项目周期也被压缩到原来1/3来完成,疲于奔命的我们,为了完成任务而编码,很多修改都是临时产生的。
容器的重启就成了家常便饭,也就成了一个巨大的痛苦。
分析的不错,有什么好的建议呢?jsp修改不重启,class修改重新载入,配置文件修改才重启。
看不懂!
“尤其现在经济不好,公司必须利益最大化,省略掉其他的必要步骤,测试完全被抛除在绩效之外,完全以实现功能为主。”
因为经济不好,所以要采取更低效、更浪费成本的工作方法?
那请你不要用了。。。
反正一看就不懂啥技术。。特性的。。
批评的是,这个是管理层决定,不是由我们来定的。唉,有苦难言啊!
rt
其实现在还有很多其他选择来帮助Java程序员开发Web应用。比如 ProjectZero
www.ibm.com/developerworks/cn/web20/zero/
www.projectzero.org/
与J2EE服务器完全不同的设计理念,应用即服务器,重新启动只需要很短的时间。
曾用 Java 基于 Opencms 搞过一个网站,那效率真是无法忍受,每次改动源码后等待生效的时间都比PHP、Python的时间长得多,要是重启 Tomcat5.5 都要等十来秒!现在改用 Python/Django 赚生计了,嘿嘿!
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于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。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
16 条回复
关注此讨论 回复