以下是本次北京velocity大会的总结,分三节介绍如下:
1.
大会简介
2.
分主题概述
3.
会议总结
大会简介
本次北京的Velocity大会是国内外互联网公司为提高网站性能而举办的技术交流大会。很有幸参加了本次velocity大会,国内外知名的互联网公司差不多都参加了本次大会。会议上午是主题演讲,主要是会议的赞助商代表概括介绍公司的一些技术特点,我们公司Summer介绍的webex的高可用性5个9给会议在场人员留下了深刻的印象。下午是分主题在3个会议厅同时进行。本次大会的主题是web性能和运维,如何提供web性能和提供网站的易维护性的方方面面都有所介绍。本次大会的演讲资料都可以通过会议首页http://velocity.oreilly.com.cn/index.php?func=session&name=WPO%E4%BA%A7%E4%B8%9A%E5%B7%B2%E7%BB%8F%E5%88%B0%E6%9D%A5获取,下面重点将我听到比较有体会的一些主题进行一些概述。大多主题大会时间都很有限,讲述内容很多都比较概括,很多幻灯片都是迅速略过。本人体会也不是很深。
分主题概述
12月7日
09:30 主题发言 WPO产业已经到来Steve Souders (Google):
Steve
Souders是WPO的概念提出人和倡导者,他重点介绍了如何提高web性能的前端技术的方方面面,特别是提供了一些工具YSlow,Page Speed,SpriteMe性能剖析方面有很大的帮助,他著作的两本性能优化方面的书《高性能网站建设指南》和《更快速网站》现场卖得很火。
10:00 主题发言 稳定、高效、低碳──淘宝软件基础设施构建实践 章文嵩 (淘宝)
章文嵩是淘宝的技术大牛,国内LVS创始人,他介绍了淘宝平台数据存储方面的演进历史,提到小图片存储TFS。重点提到在网络流量方面在国内外都首屈一指,特别提到光棍节淘宝商城打折时应对了超高网络流量的冲击。
10:40 主题发言 透过用户数据提升网站性能 蒲炜 (基调网络)
由于本人孤陋寡闻,以前还未曾听过过此公司,实际上该公司是对互联网公司的QOS进行监控,为互联网公司的决策提供基础数据。这个公司给我留下了深刻的印象。如果我们想提高性能,没有监控,没有历史数据,就不会有正确的决策。也是本次大会给我留下的深刻印象。我们应该加强对系统的监控,以便我们更有效地管理我们的系统,提供更可靠的服务。
10:55 主题发言 构建高效的CDN运营管理系统 黄莎琳 (网宿科技)
该主题的演讲者比较简单介绍了CDN的一些常识和他们公司CDN的架构,对未曾接触过CDN的人或许有用。
11:10 Facebook网站的Ajax化、缓存和流水线 Changhao Jiang (Facebook)
整个上午最赞的主题,由于演讲者是中国人,就免去了英文翻译带来的一些歧义。分别在3个方面讲述了facebook在网站优化的一些策略:
a.
Quicking:通过捕捉用户的点击行为,将link的点击转化为ajax请求,避免了内容的重复加载。
b.
PageCache:缓存常用内容在浏览器,通过ajax poll更新状态来保持缓存的一致性。
c.
BigPiple:核心思想是将页面分成相互比较独立的单元,通过ajax方式由原有的串行加载改为并行加载,从而加快页面的加载及渲染速度
13:10 淘宝云梯分布式计算平台整体架构张清 (淘宝)
云梯分布式计算平台是采用hadoop系统的任务调度系统,各业务系统通过调用gateway提交任务到hadoop MapReduce分布式计算平台,MapReduce通过读取策略数据按照最有调度策略进行任务调度。调度策略是通过元数据分析得出的。最大的闪光点是通过元数据分析来制定合理的调度策略,从而达到资源的有效利用。
14:10 构建高性能的MySQL系统 杨海朝 (新浪)
对mysql做了比较适用的讲解,介绍了innoDB,MyISMDB存储引擎的差异,在不同场景合理使用不同的存储引擎。还介绍了一些比较实用的mysql使用规则。也介绍了mysql的集群、master/slave模式。虽然内容不算有新意,但知识点都比较实用,在我们使用和部署mysql时有较大的指导意义。
15:20 第三方广告代码稳定性和性能优化李穆 (淘宝)
这个主题吸引我的原因是以前在从事网站第三方合作时遇到过性能方面的问题,虽然解决方案大同小异,但是演讲者深入浅出地把问题讲得很透彻。网站引入第三方代码通常就是引入一段JavaScript,如果处理得不好可能会导致页面加载缓慢,如果第三方网站不可访问甚至会导致页面无法加载,解决方案是通过ajax异步方式增加script dom节点的方式避免了网页加载缓慢及无法的问题。通过一个定位标签来方便确定广告的位置。
16:10 Alibaba数据库运维最佳实践 张瑞 (阿里巴巴)
这个主题引起了我的共鸣,Alibaba的数据库演进史和webex的数据库演进史如出一辙。从最先的一个oracle存储到oracle集群再到oracle存储关键的复杂的业务数据辅以分布式mysql集群存储以及K/V存储的混合存储系统。他们在SSD存储做了较多研究,在性能和成本方面需要折中。
12月8日
09:00 主题发言 卷土重来:服务器端JavaScript Douglas Crockford (Yahoo!)
主要讲了JavaScript语言的历史及在服务器端JavaScript的应用,重点将JavaScript的语言特性。总的影响不是特别深。
09:30 主题发言 Facebook: 一个可持续发展的高性能网站David Wei
(Facebook)
又是一个非常有趣的主题,facebook果然在技术讲解方面都非常出色。提出持续发展的高性能网站应该遵循的一些规则。其中讲到的一个有关架构要求统一接口存储cookie,而如何避免业务开发人员胡乱使用cookie的解决方案特别有启发。通过架构组开发的js自动检测不合理cookie使用的例子,引导我们产品架构或平台team应该开发好用的框架,同时能避免错误使用的检测工具,把主动权控制在架构team,确保系统架构不会被破坏。演讲者还提出了数据驱动性能的观点,只有收集更多的性能剖析数据,才能有更多的机会持续改进网站的性能。很多性能的改进都是从历史数据分析过程中决策出来的。
10:00 主题发言 WebEx:高可用网络会议十年历程 方剑斌 (思科网迅)
我们公司的Summer演讲,高可用是我们系统最大的亮点。5个9的高可用性想必是提供SAAS服务平台都追求的目标,相信给与会者留下了深刻印象。
10:15 主题发言 构建高可扩展的互联网流量调度平台 宗劼 (蓝汛)
国内首家上市的CDN厂商介绍了他们的流量调度系统。给我印象深刻的是这次共有2家CDN厂家以及土豆网进行了CDN相关知识的演讲。看来要提高网站的性能,CDN的使用是互联网公司达成的共识。由于时间有限,讲得比较简略。
10:40 主题发言 Google Chrome与网页应用性能问题赵静 (Google)
重点讲了chrome开发工具的使用。
11:10 更快的Web站点Steve Souders (Google)
一些看起来是标准的使用方法有可能带来性能问题。列举了很多著名网站都可能存在可优化的地方。以JavaScript的使用为例子结合浏览器的解析执行流程来说明可能出现的性能问题。更多知识应该在他著书《更快的网站》中有详细的讲解。让我们重新认识JavaScript在网站性能优化方面的一些新方法。
13:10 云计算大规模集群的监控平台—鹰眼 周光辉 (阿里云)
带着满怀期待去听这个主题,对比我们的MCP和SNMP监控,有很多相似之处。多层次的监控,多种预警报警机制,24小时的值班监控,是确保我们云计算大规模集群系统可靠运行的基本保证。他们使用的health-check和我们的方法很相似,并说明了最有效的health-check可能是最简单的业务调用检查。通过眼、脑、手的恰当比喻来说明监控包含的3个环节,数据采集,数据分析,采取行动。
14:10 百度分布式数据库 刘斌 (百度)
主题重点讲单机数据库的优化和分布式数据库的优化。在单机数据库系统特别对SSD方面存储的优化方向进行研究。主要研究innoDB来完成扩展full-text search、online schema change、snapshot.读写性能优化要分不同情况下进行相应的优化。单机优化研究直接与存储系统打交道,绕开通用的文件系统。分布式架构和阿里巴巴采用的方案相似,都是通过一个透明的DBproxy层来进行DB垂直水平切分。数据的切分可以采用多种模式。同时讲在分布式中通常需要考虑的问题是可扩展性,数据一致性,系统可靠性,和我们了解到的方式大同小异。
15:20 另辟蹊径——腾讯web应用的优化新思路 黄希彤 (腾讯)
演讲者的幻灯片很有特点,特别提到软件的accessibility方面,在深圳照的几张照片说明我们很多人做事的时候都没有为设身处地为用户着想。用一个具体的例子讲述了prefatch技术在腾讯的成功应用,再一次体现了数据驱动的核心思想。用几幅生动的幻灯片讲解了DNS的核心原理。演讲者的演讲技巧给我留下了深刻印象。如何用浅显的图例阐述复杂的问题。特别赞一个。
16:10 IE9及高效互联网体验黄继佳 (微软)
接下没地方可去,去关注了一下IE9的一些最新动态,这个主题可能算是IE9的推销会,重点讲了IE9相比以前IE版本的性能方面的巨大优化,特别有意思的是在幻灯片演示的过程中IE9和chrome中的一个对比,一个计算任务IE9用了10秒,chrome好长时间也没有运行完成。不过这个演示招到了台下的哄笑。但不管怎么说IE9硬件加速(GPU)来进行高密度计算技术在未来的3D,视频播放方面应该会得到广泛的使用。我们期待更强更快的浏览器,或许我们未来我们系统真的只需要浏览器了。IE9只能运行在vista和windows7系统,我家里装了一个,感觉IE9在性能方面确实做了很大的优化,而且在开发工具方面也提供了非常全面的支持,以后前端开发工程师应该越来越有效率了。
16:40 Firefox的Layout/Reflow 米嘉 (Mozilla)
Chrome、IE都亮了相,FireFox自然不甘落后,我们不得不感谢Firefox的贡献,有了firefox的出现,才加速了浏览器技术的革新。演讲者重点讲Firefox4.0一些新的特性,利用云存储,firefox的个性特性数据可以跟随用户走,这有点像sogou拼音一样。最大的收获应该演讲者讲述了layout或者说浏览器渲染过程。通过对渲染流程的了解,可以原有一些web优化准则的原理。提到的任何东西都是盒子算是对layout过程的总结,这应该是CSS中提到的盒子模型吧。
会议总结
通过几个主题的学习,本次技术大会可以总结如下:
后端技术
1.
CDN
通过本次大会,本次大会共有2家CDN厂商参与了主题演讲,同时土豆网、淘宝网也就CDN技术做了精彩的阐述。互联网领域CDN技术的使用已经非常广泛,对于提高网站性能至关重要。CDN技术的使用有两种选择,对于小型公司,直接使用CDN厂商提供的产品是明智之举,如百姓网的PPT就体现了这一点。对于大型公司,CDN的使用场景复杂,比较适用自己开发。淘宝和土豆网的历程说明了这一点。对于我们webex系统来讲,构建一套自己的CDN产品还是很有必要。DMS1.4系统中已经做了尝试,引入了跨DC的File CDN技术,对于提高文件的访问速度大有帮助。我们杭州已经有相关人员正在研究CDN,相信不久将来,我们自己的CDN系统就快到来。
2.
分布式存储
a)
Mysql广泛被使用:在2009年,NoSQL的分布式存储被热炒了一把,本以为这次大会也会有对NoSQL的详细解决方案有经验分享,出乎意料的是几乎没有人提及Cassandra,这个一度被认为是解决分布式存储的银弹又沉寂了。令人印象深刻的是,淘宝、阿里巴巴、百度、新浪、网易、凤凰网、盛大都分享了有关Mysql优化的经验,百度通过对Mysql的改写直接把Mysql集群作为他们的KV存储系统。百度刘斌的演讲很精彩,从单机存储优化方面入手,他们分别在存储系统、操作系统、缓存等方面进行了大量的研究工作。这些大公司对数据库的使用经验值得我们借鉴。公司应该增加对Mysql的研究和使用,就我所知,LDSF已经开始使用Mysql存储数据,我们DMS也计划将部分数据存储到Mysql,减少我们核心资源oracle的负载,一定程度上也会降低我们的成本。
b)
SSD已经被多家大公司应用到生产环境。百度、淘宝、阿里都对SSD在改进数据存储性能做了大量的研究。昂贵的价格是需要我们合理使用,因此几家公司都采用混合存储系统,充分利用不同存储设备的特性,从而在有限的成本范围内最大限度地提供IO性能。
c)
通过DB proxy抽象层来进行数据的分布。如果我们未来需要大规模使用mysql进行数据分布,这一层抽象我们需要着手考虑。
d)
DFS. 要提高存储的性能采用不同的存储策略很有必要。淘宝针对小图片的存储开发TFS,对于我们DMS,我们需要分析各类文件的使用情况定制合适我们自己的文件系统。
e)
数据一致性。在分布式环境下数据的一致性问题始终存在,能够达到最终一致是大家达成的一种妥协办法,谁让CAP原理的存在呢。
3.
系统监控
本次大会主题就是网站性能与运维大会,充分的系统监控是网站可靠性的重要保证,我们公司能够提供5个9的可靠性,离不开我们良好的系统监控。阿里云、网易、淘宝都介绍了各自的监控系统。监控系统需要关注一下.
a)
数据采集要充分。在我们最新的DMS1.4中,DMI子系统我们对多个关键点进行了监控。建议我们的监控系统增加一个监控点规则,让我们webex的系统都遵循一定规则进行监控。
b)
系统health-check要可靠。阿里云的周光辉讲到,他们在做health-check时,最开始用底层的一些技术如ping来确定服务是否可用,实际上这种检查有时不可靠,比如一个线程挂住不能处理业务,但ping总是可用成功。他们的解决办法和我们的监控系统MCT一样,调用一个代价最小的业务功能代码看是否可用。比如数据库的可用性就是通过调用一个代价很小的select from dual这样的语句来检查的。我们的监控系统采用了两种模式:通过定期调用被监控系统简单业务代码MCP模式和等待通知的SNMP模式。
c)
系统能够做大多数自动化工作。阿里云用恰当的眼、脑、手来比喻系统监控的作用。我们需要通过监控到的情况作出一些决策,比如监控到监控到一个进程挂了,立马拉起了等类似工作。DMS1.4系统已经纳入了我们的监控平台进行监控,进程监控这样的工作已经自动化。随着我们系统的进一步使用,可以增加更多的自动修复功能。
d)
系统报警要准确及时。监控系统的目的就是及早发现问题,制定合理的报警策略非常重要。什么才是合理的报警策略希望监控平台相关人员给我们一些培训。儿时的狼来了的故事应该是错误报警可能会带来严重后果。如果一个不重要的预警信息进行了报警,每次去处理时发现没有什么严重问题,时间长了真的严重问题出现可能也会让人麻痹大意。
e)
数据图表要直观。系统监控的目的是发现问题,直观的表现方式容易发现问题。
4.
大规模集群的高可用性
本次大会HA方案中,我们的primary/GSB方案应该具有最高的可用性。多家公司提到了HA方案没有太大新意。像阿里的oracle跨DC复制就是进行日志同步,而mysql的同步几家公司都采用mysql的自身复制策略。而对于延时问题似乎没有特别好的方案。
5.
分布式计算平台hadoop
淘宝提到的天网系统解决了云计算平台中的任务调度。他们利用Hadoop的MapReduce框架,充分利用元数据库制定出最佳的任务调度策略是该系统的亮点。我们的新项目webexHive正在利用hadoop进行大规模日志分析,期待该系统为我们公司计算平台的研究提供帮助。
总的来说要提高后端系统的性能,需要我们更深入了解底层的东西,如磁盘系统,交换系统、网络协议栈,操作系统都应该深入研究。虽然我们是java开发工程师,如果仅仅局限于java语言层面,则不能有开创性的思路。在这些方面,hz web platform已经就Linux操作系统内核、TCP/IP协议、网卡等底层技术进行研究。
前端技术
由于我的本次重点是关注后端存储技术,前端技术就简单总结如下:(题外话:这次会议有一个很特别的现象,国内公司关注后端技术比较多,而国际公司如google,facebook,yahoo!,微软等都介绍的是前端技术)
1.
JavaScript:
两位JavaScript领域的大牛Steve Souders和Douglas Crockford都对JavaScript进行了深入讲解,具体细节就不赘述。有意思的是两位大牛这次都在推销他们书,他们核心思想应该都在他们出的书里面。Steve所著的两本《高性能网站建设指南》和《更快速网站》应该是物有所值。我粗略看过《高性能网站建设指南》,真的大开眼界,对JavaScript执行细节有了深入的剖析。Douglas的《JavaScript语言精粹》也应该值得一读。
2.
浏览器:
Chrome/IE/Firefox的厂家都来助阵,看来web时代的到来,对于前端技术的发展应该有相当大的促进。更快的性能,更加易用,更加方便、统一的编程模型是浏览器厂商达成的共识。JavaScript新的标准已经出来,新的浏览器内核都应该遵循相同的标准。浏览器标准的统一是我们前端开发人员的梦想。HTML5为我们画展现了美好的远景,但标准还在不断演进,我们可以密切关注HTML5的最新动态。
3.
Web性能检查工具:
在早期的web站点开发中,大多数都是由服务器端产生页面,如asp,jsp,php。Web2.0概念的提出,ajax技术得到了广泛的使用,但由于web性能工具的匮乏,使前端开发人员处于痛苦的开发过程之中,很多调试过程只能通过alert来进行,以前我在开发web页面就深有体会。Firefox的firebug的出现,大大降低了前端开发的复杂度。现在几乎所有的浏览器都有内置或插件工具进行js调试、页面加载profile、dom树的查看等。这次Steve大牛就推荐了几个web性能检测工具YSlow、PageSpeed、SpriteMe。前端开发工程师可以参考Steve的个人网站http://stevesouders.com/了解更多前端技术。
分享到:
相关推荐
### Velocity 总结 #### 一、Velocity 引言及特点 Velocity 是一款基于 Java 的模板引擎,它的主要特点是能够直接操作 Java 对象,从而帮助开发者实现 Java 业务逻辑与前端展示层的有效分离。这种特性使得 ...
【Velocity语法以及整合struts2总结】 Velocity是一个开源的Java模板引擎,它是Apache软件基金会的Jakarta项目的一部分。Velocity将HTML代码与业务逻辑分离,使得开发者可以专注于内容和设计,而不用关心数据如何...
Velocity是Apache软件基金会的一个开源项目,它是一款强大的模板引擎,主要用于生成动态Web内容。 Velocity的主要优点在于其简单易用和高度可扩展性,使得开发者能够将业务逻辑与表现层分离,提高代码的可读性和维护...
【 Velocity 插件详解】 Velocity 是一款基于 Java 的模板引擎,它被广泛应用于 Web 开发中,特别是作为 Apache Struts 和 Spring MVC 框架的一部分。Velocity 插件则是为了在开发环境中提供对 Velocity 模板语言的...
Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity Velocity
**Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态网站内容。Velocity被设计成一个轻量级的、快速的、非侵入式的模板语言,使得开发者能够将HTML页面的展示...
### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...
这两个指令属于Velocity Tools的扩展,如果你的项目中引入了Velocity Tools,可以通过在`velocity.properties`文件中添加以下配置来启用它们: ```properties userdirective = org.apache.velocity.tools.generic....
总结来说,`JAVAEE Velocity例子工程` 提供了一个直接操作 Velocity 的实例,帮助开发者理解如何在JAVAEE环境中有效地利用Velocity进行动态页面生成,无需复杂的配置,便于快速上手和实践。通过研究这个项目,你不仅...
`eclipse相关插件`,虽然不是必需的jar包,但对于使用Eclipse作为IDE的开发者来说,可能需要安装Velocity支持的Eclipse插件,如Velocity视图插件,它能提供模板语法高亮和代码完成等功能,提高开发效率。 为了正确...
总结起来,Velocity 是一个强大而灵活的模板引擎,它简化了动态内容生成的过程,使得开发者可以专注于业务逻辑,而设计师则可以专注于页面布局。结合其丰富的配置选项和扩展机制,Velocity 成为了Java Web开发中的...
在Eclipse中集成Velocity插件,可以方便地进行Velocity模板的编写和调试,提高开发效率。 首先,让我们深入了解一下Velocity插件在Eclipse中的作用。Velocity插件提供以下功能: 1. **代码提示和自动完成**:在...
Velocity是Apache软件基金会下的一个开源模板引擎,用于生成动态Web页面。它基于Java语言编写,可以被集成到多种Java应用程序中,如Java EE应用服务器和Java Web应用框架。Velocity模板语言(Velocity Template ...
Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...
总结,Velocity Eclipse插件是Java开发者在Eclipse环境下高效开发Velocity模板的得力助手,通过其丰富的特性,可以显著提高开发效率和代码质量。掌握并善用这个插件,将使你的Velocity模板开发工作更加得心应手。
Velocity是Apache软件基金会下的一个开源项目,它是一个Java模板引擎,用于生成动态Web内容。Velocity在Web开发中常被用来生成HTML、XML、CSV或其他格式的文档,将内容和表现分离,让开发者专注于业务逻辑而不用关心...
Eclipse编辑Velocity插件VelocitySite-2.0.8是一款专为Java开发人员设计的工具,旨在提升在Eclipse集成开发环境中编辑Velocity模板语言(VTL)的效率和体验。Velocity是一个快速、轻量级的Java模板引擎,常用于Web...
2. **velocity-1.4.jar**:这是Velocity的主要库文件,包含了 Velocity Engine的核心实现。它负责解析模板,执行嵌入的Java代码,并生成最终的输出。版本1.4是一个较早的版本,但依然稳定且广泛使用。其中包含了许多...