Server-SideJavaScriptDevelopementNode.JSQuickTour数据平台与产品-清笃qingdu@taobao.comfrom年4月2日星期六传统观念JavaScript=浏览器客户端11年4月2日星期六Server-SideJavaScript11年4月2日星期六先驱AptanaJaxerHelma11年4月2日星期六Jaxer•ApacheHttpd•MozillaSeaMonkey•“世界第一”•前后端js代码的统一与互相调用•传统的服务器端脚本11年4月2日星期六适用场景•web前端系统•对不支持js的浏览器提供js支持11年4月2日星期六Helma•RingoJS•“12years”•Java•MVC•应用服务器11年4月2日星期六问题•nomoreservers•domorethings•统一标准•技术生态圈11年4月2日星期六Revelutionsin2009•CommonJS•JSConf•Node11年4月2日星期六Node'sgoalistoprovideaneasywaytobuildscalablenetworkprograms--nodejs.org11年4月2日星期六发展历史•1/5/2009RyahDahl提出项目构想•2/15/2009项目启动•5/31/2009发布初始版本•......•3/2/2011v0.4.4发布11年4月2日星期六社区与生态圈•目前在官方wiki上有近700个module•超过20位活跃的开发者•每天都在进步11年4月2日星期六基础库•libev(eventloop)•libeio(nonblockedposix,threadpool)•v8(javascriptenginebygoogle)11年4月2日星期六核心思想•非阻塞•单线程•事件驱动11年4月2日星期六阻塞模式11年4月2日星期六非阻塞模式11年4月2日星期六单线程-优势•程序逻辑简单•系统资源占用低•无通信与锁开销带来高性能11年4月2日星期六单线程-劣势•一个程序仅能在一个cpu上运行•一旦程序异常将导致整个进程崩溃11年4月2日星期六解决方案-WebWorker11年4月2日星期六性能•AMDOpteron2200单核,4GRAM•socketclient20,000+qps•socketserver17,000qps•httpserver4,400qps•内存消耗30~40m•seemore.=811年4月2日星期六一些限制•SSL支持不够成熟•Windows下还存在很多问题•1Gheap限制(byv8)11年4月2日星期六适用场景•WebSocket&WebComet•大并发负载中间层服务•简单的Spider11年4月2日星期六Digintothenode11年4月2日星期六安装11年4月2日星期六HelloWorld!Familiar&Simple11年4月2日星期六HTTP服务11年4月2日星期六StringvsBufferString带来的问题•转码开销•内存开销•memcopy•垃圾回收11年4月2日星期六NodeBuffer30BufferCodesNodeV8EngineBufferMemory11年4月2日星期六WithStringStringvsBuffer11年4月2日星期六StringvsBufferWithBuffer11年4月2日星期六WithString带来的性能改进11年4月2日星期六带来的性能改进WithBuffer11年4月2日星期六Debug11年4月2日星期六Debugineclipse•EclipsedebuggerpluginforV8:•年4月2日星期六UnitTest•Expresso•Nodeunit年4月2日星期六UnitTest11年4月2日星期六UnitTest11年4月2日星期六包管理•PHP:pear•Python:PyPI,setuptools•Ruby:Gems•Node:11年4月2日星期六安装与使用11年4月2日星期六Links•••••年4月2日星期六11年4月2日星期六nodejs-kissy11年4月2日星期六nodejs-kissy•kissy框架的node移植版•oneforall•年4月2日星期六node-myfox•mysql分布式集群的查询系统•对客户端透明•支持http/socket协议•deamon-worker•unix-socket11年4月2日星期六node-myfoxMasterSqlQueryWorkerRouter!#$%%!#$%%$'($'($)$)http/socketRouteInfoShardInfoRouteDataShard1Shard2ShardN11年4月2日星期六CNodeJS.ORG为淘宝的工程师志愿发起的Node.JS原创技术社区,致力于Node.JS的技术研究和技术推广。11年4月2日星期六CNodeJS•blog••ask•年4月2日星期六CNodeJS北京聚会邀请你参加11年4月2日星期六时间:2011.4.16(周六)下午地点:北京betacafe11年4月2日星期六11年4月2日星期六杭州站·2011年10月20日~22日(6月启动)QCon北京站官方网站和资料下载