当前位置:首页 > 经验总结 > 正文

沪JS2012会议总结

2012-09-14,15日参加了沪JS2012会议,总体感觉收获比较大,同时会议规格很高,比我原先想象的要高很多。最直观感受是有来自全球各地的优秀开发工程师进行了实际项目技术分享,包括美国,波兰,加拿大等国…
同时遭受到了很大的英语信心摧残,感觉适应英文技术交流面临比较高的英文水平挑战,能够快速适应美国地道口音,但是如果碰到是波兰,加拿大地方口音的时候…..,还好有2位国外朋友口语很标准,
讲座主要在周五,周六2天,共4场,从其中分享的很多项目中来看,nodejs在网络密集请求,高并发方面,尤其是需要保持长连接方面特别有优势,主要是基于其事件驱动模型,异步IO,简单的理解:有N个请求
过来,1个需要读取DB,耗时200ms,一个需要读取缓存文件,耗时50ms,一个需要读取文件,需要耗时260ms,如果对于apache等基于线程模型的服务器,这里的3个请求,可能需要耗时200+50+260ms,当然
可以开启多个线程来进行并行处理,这里不谈,但是用nodejs,可能全部处理上述3个请求只需要260ms,这个就是异步处理请求,想起了华罗庚的《统筹方法》,初二语文课中的文章了没?….烧水20min,做饭30min,
洗衣服40min,怎么样能够让这些事情做完总耗时更短….
下面列举下其中掌握的一些信息:
(1)来自阿里苏千分享议题:写了nodejs,遇见过3个坑,
a. 回调函数执行2次:js的回调函数中有try catch,可以捕获异常,同时调用了其他函数,但是如果其他函数也抛出了异常,这样…
b. 某个项目想优化,在请求模式为write-write-read时候,响应时间增加了40ms,会激活系统的TCP延迟确认,有兴趣童鞋可以了解下Nagle algonithm算法,只要设置setNoDelay(true)可以解决;
c. mongodb的CPU负载过高,正常工作,但是人为连接后会立刻断开,因为系统服务器管理中有ACL(Access control logic),在跟踪到底层,因为nodejs的新颁布在HTTP模块中有自动重新连接功能,在特定系统中,导致了某种死循环
总结:解决问题只需要一瞬间,可是重现问题/发现问题/最准确的解决才是最耗时的工作;
(2)一位印度口音的开发工程师根据nodejs,扩展了lua,相当于C->C++的概念,大概是1W行C代码实现,有些我没听懂;
(3)windjs代码调试框架:
方便的进行js代码调试,这里不好细讲,大家可以搜索下混淆代码sourcemap,他们编写了一个编译器,掌握了所有的代码信息,可以根据一定的算法提供必须要的信息,在我们的chrome浏览器中可以勾选(右下角的选项,知道在哪了吗?)

(4)seaJs代码组织方式:是由玉伯开发的遵循CommonJs规范的模块加载框架,当某个系统需要引入超级多的js和css的时候,这个时候进行维护就很痛苦了,它可以自动加载需要的js和css文件;有兴趣可以看下http://seajs.com
(5)新浪微博的MySQL的分布式架构/异步网络编程中使用了nodejs,Interface of JS, heart of C++(nodejs的作者选择创造nodejs的主要原因是基于functional programming & closure),在1K的并发下内存占用不超过100M,
在js中没有锁并发,线程安全等问题,这些是在多线程编程中经常碰到的问题;同时进行数据并发测试情况下,非常优秀,包括内存占用,QRS能达到45K,nodejs的瓶颈主要CPU上;另外提到了12条让他觉得不爽的理由,这里不详述;
(6)nodejs在朋友网中的实践—黄友昆(RTX: youkunhuang),主要谈到了如下几点:
a. 选择nodejs的理由:维护成本低,工作沟通成本低,服用seajs模块,快速开发原型,快速响应需求,快速给出解决方案,可以编辑的反向代理;
b. 出众的性能:通过比较各种语言elang,nodejs,C/C++,java/php等语言;
c. 长连接架构:维护用户在线聊天,webIM,单台使用8核8G可维持13W个长连接,20%内存占用;共开启了17个nodejs进程;
d. nodejs优化:包括日志优化,日志过滤器,观察某个用户的信息,子进程会每隔5s发送心跳包,如果没有响应则重启;
e. 上述谈到过,CPU会成为nodejs的瓶颈,所以这里他也谈到了CPU绑定;
(7)node-webkit,来自intel开发工程师
a. 是一种WEB APP RUNTIME,整合了nodejs特有的require函数,整合到了webkit中,包括所有的nodejs函数,在浏览器中可以直接使用nodejs的函数,nodejs functions live in the render process,直接
跨平台,比如OS X, Windows, Linux,完整的打包格式,迷你谷歌浏览器,支持第三方模块(主要是使用集成了开源谷歌浏览器代码,同时开发了一些敏感API,比如文件操作的API等),
b. 之后他谈到了HTML5游戏的发行平台, (这里也涉及到了发行平台,翻译为Distribution platform,不是我们翻译的faxingpingtai),它支持GPU加速,音频与视频支持/html5;另外讲到了文件管理器,
可以考虑用webkit编写;另外有人使用她实现了一个HTML5编辑器
c. getUserMedia api的描述
(8)网易游戏团队带来的是游戏服务器的设计
a. 游戏服务器要求单进程多线程问题,所以nodejs天生适合适合做游戏的server,(游戏后台服务器涉及到的服务器包括内容:游戏长连接,游戏场景服务器,在同一个进程中跟地图绑定,网络密集性,操作性)
b. 经过多次比较后他们自己设计了一套框架,其中主要目标包括:服务器的扩展,请求,响应,广播响应,所以他们设计的框架前后端都是nodejs,因为需要发送大量的广播到后端服务器,
客户端基于html5,大约6K行代码,服务器端使用nodejs,大概6K行;大约1个月之后会开源出来;
(9)坐我旁边朋友推荐了一款优秀的终端软件:tmux,我试过,推荐大家使用;
(10)其他很多外文的很遗憾不能和大家分享,没法记录下来,其中很多都谈到了关于内核的优化,TCP内核优化,关注gc,node–trace–gc
(11)微软的开发者给我们介绍了window8,感觉也很炫,大家可以期待下,从演示的流畅性,体验交互方面,真的是和以前的系统有很大的不同(他是地道的美国人,因为我能听懂不少他的纯正美语)
PS: 和大家分享下会议几天的趣闻:
a. 其中有一位16岁的初中毕业生,刚上高一,也在大会上进行了分享,关于连接前段和后端的js,水平很高,比较自信,会后我们很多朋友和他一起吃自助烧烤的时候,
也在讨论,在中国一位16岁的开发,也许放在全中国也许有很多,但是比较是极少数,其中另一位苏州演讲者对他的老爸很有兴趣,讨论如何教育他三岁的孩子,如何
进行培养,16岁能够对js很精通,也很不容易,而且都追求这么时髦的技术,已经和风投,一些公司进行了接触,现在的90后…..,对max2.0的培养有一定启发意义;
b. 上面谈到的这个苏州老爸,分享的议题是关于PHP+JS的一个项目,以他儿子的名字注册了域名,然后记录了他儿子的成长经历,同时还有一定的技术含量
c. 这次又碰到了上次在阿里技术嘉年华2012分享的朋友朴灵,和他确认了下,在淘宝中使用nodejs已经推动的系统包括一些以数据为主的系统,包括女装频道,数据魔方,给我
大致浏览了下他即将出版的书籍,
d. 有位上次8月份去深圳参加过架构师大会的朋友,他感叹:这次的会议的档次比架构师大会的要高,性价比很高,因为架构师大会上面的很多内容,可能都是讲过N次的,这次的分享
全部都是真正的开发者,分享了很多干货,尤其是国外的朋友,都是自己做的系统;
e. 周六晚上的party,总体感觉很棒,能极大促进大家的交流,认识朋友的好地方(都是男滴,不要想歪了),二楼的自助餐,三楼的自助烧烤都很不错,N多的羊肉串,牛肉串,鸡翅,鸡腿….关键是免费的,
f. 和主办方聊过后,他打算会在几个月后去深圳举办,到时候深圳的童鞋可以多关注下,有消息我会通知大家;也了解到收费的目的,主要是为了过滤一部分闲杂人士,听说有以前举办的时候,
有很多老头,老太太去参加,就是帮助消灭美食的;这次他们花费了较多的时间在赞助上面,大头的赞助来自github,大概是1-10W刀,然后经过infoq开发票,infoq抽20%….,举办
一场这样的交流会,大概的费用是20W+,其中有一定政府支持;
g. 其中很多项目在github上面有源码,大家可以多关注下github,国内的网站主要是cnodejs.org,csser.com,
h. 技术口语英文和我们平时接触到的书面技术文章还是有很大差别,我的书面英文不错,基本口语包括说hello蛮好的,可是在真正的英文技术交流中,还是有很大的障碍,这个平时积累不够,
针对这个问题我问过会议主持者,(他水平很高,能够轻松转化将一些中文翻译过来给老外,达到了一定的同声传译水平,了解后他是复旦毕业的,教程都是英文,之后在IBM实习,在淘宝
工作一段时间,也是经常做会议主持的,很活跃< 阿里有专门的团队举办业界技术交流大会,有专门经费>,目前在上海定居),其他大家都懂了…
i. 和他聊过这次沪JS2012为什么感到不是很强大,实际上是因为经费的问题,但是举办后,却感觉很强大,之后会在几日后,官网会有各位讲师的联系信息,大家有问题可以直接和他们沟通,或者
我代为联系;因为是我个人的建议,不一定奏效;官网:http://www.jsconf.cn
之后infoq会在网上发布全程视频,大家可以详细了解,有问题可以可以和我沟通,另外我们中心的系统中,涉及到数据分析,例如调用用户在线数,经分系统,需求变化较大,灵活度需要很高的系统,可以考虑采用nodejs架构,以上是我参加会议的记录和心得,可能有不正确的地方,欢迎大家指正!希望能有帮助,谢谢!需要附件的和我联系

暂无评论

发表评论