狠狠撸

狠狠撸Share a Scribd company logo
Server-Side JavaScript
                Developement
                      Node.JS Quick Tour

               数据平台与产物 - 清笃 <qingdu@taobao.com>
                    from http://cnodejs.org/




11年4月2日星期六
传统观念


             JavaScript = 浏览器客户端




11年4月2日星期六
Server-Side JavaScript

11年4月2日星期六
先驱


             Aptana Jaxer




               Helma


11年4月2日星期六
Jaxer

             ? Apache Httpd
             ? Mozilla SeaMonkey
             ? “世界第一”
             ? 前后端js代码的统一与互相调用
             ? 传统的服务器端脚本

11年4月2日星期六
适用场景


             ? web前端系统
             ? 对不支持js的浏览器提供js支持


11年4月2日星期六
Helma

             ? RingoJS
             ? “12 years”
             ? Java
             ? MVC
             ? 应用服务器

11年4月2日星期六
问题
             ?   no more servers

             ?   do more things

             ?   统一标准

             ?   技术生态圈




11年4月2日星期六
Revelutions in 2009
         ?   CommonJS

         ?   JSConf

         ?   Node

11年4月2日星期六
Node's goal is to provide an easy
             way to build scalable network
             programs

                                -- nodejs.org



11年4月2日星期六
发展历史

             ? 1/5/2009 Ryah Dahl 提出项目构想
             ? 2/15/2009 项目启动
             ? 5/31/2009 发布初始版本
             ? ......
             ? 3/2/2011 v0.4.4 发布

11年4月2日星期六
社区与生态圈

             ? 目前在官方wiki上有近700个module
             ? 超过20位活跃的开发者
             ? 每天都在进步


11年4月2日星期六
基础库

             ? libev (event loop)
             ? libeio (nonblocked posix, thread pool)
             ? v8 (javascript engine by google)


11年4月2日星期六
核心思想

             ? 非阻塞
             ? 单线程
             ? 事件驱动


11年4月2日星期六
阻塞模式




11年4月2日星期六
非阻塞模式




11年4月2日星期六
单线程 - 优势

             ? 程序逻辑简单
             ? 系统资源占用低
             ? 无通信与锁开销带来高性能


11年4月2日星期六
单线程 - 劣势

             ? 一个程序仅能在一个cpu上运行

             ? 一旦程序异常将导致整个进程崩溃


11年4月2日星期六
解决方案 - Web Worker
11年4月2日星期六
性能
             ? AMD Opteron 2200 单核, 4G RAM
             ? socket client 20,000+ qps
             ? socket server 17,000 qps
             ? http server 4,400 qps
             ? 内存消耗 30~40m
             ? see more. <http://cnodejs.org/blog/?p=8>
11年4月2日星期六
一些限制

             ? SSL支持不够成熟
             ? Windows下还存在很多问题
             ? 1G heap限制(by v8)


11年4月2日星期六
适用场景

             ? Web Socket & Web Comet
             ? 大并发负载中间层服务
             ? 简单的Spider


11年4月2日星期六
Dig into the node
11年4月2日星期六
安装




11年4月2日星期六
Hello World!




             Familiar & Simple


11年4月2日星期六
HTTP服务




11年4月2日星期六
String vs Buffer
             String带来的问题

             ? 转码开销
             ? 内存开销
             ? memcopy
             ? 垃圾回收

11年4月2日星期六
Node Buffer

                     Buffer
                     Codes


                      Node
                 Buffer
                          30     V8
                Memory         Engine




11年4月2日星期六
String vs Buffer




                 With String
11年4月2日星期六
String vs Buffer




                 With Buffer
11年4月2日星期六
带来的性能改进




               With String
11年4月2日星期六
带来的性能改进




               With Buffer
11年4月2日星期六
Debug




11年4月2日星期六
Debug in eclipse

             ? Eclipse debugger plugin for V8:
              http://code.google.com/p/chromedevtools/
             ? http://bit.ly/eQl7iI


11年4月2日星期六
UnitTest

             ? Expresso
              https://github.com/visionmedia/expresso
             ? Nodeunit
              https://github.com/caolan/nodeunit




11年4月2日星期六
UnitTest




11年4月2日星期六
UnitTest




11年4月2日星期六
包管理

             ? PHP: pear
             ? Python: PyPI, setuptools
             ? Ruby: Gems

             ? Node:

11年4月2日星期六
安装与使用




11年4月2日星期六
Links

             ? http://www.commonjs.org/
             ? http://nodejs.org/
             ? http://howtonode.org/
             ? https://github.com/joyent/node/wiki
             ? https://npmjs.org/

11年4月2日星期六
11年4月2日星期六
nodejs-kissy




11年4月2日星期六
nodejs-kissy

             ? kissy框架的node移植版
             ? one for all
             ? https://github.com/kissyteam/nodejs-kissy


11年4月2日星期六
node-myfox

             ? mysql分布式集群的查询系统
             ? 对客户端透明
             ? 支持http/socket协议
             ? deamon-worker
             ? unix-socket

11年4月2日星期六
node-myfox

                                                Master
                      Sql
                               http / socket
                     Query




                             !"#$%&"#%         $"'(         !"#$%&"#%
                                                      $")


                      Router                   Worker
                                   $"'(                     Shard 1
                       Route                    Shard       Shard 2
             Route      Info         $")         Info
             Data                                           Shard N




11年4月2日星期六
颁狈辞诲别闯厂.翱搁骋为淘宝的工程师志愿发起的
             Node.JS原创技术社区,致力于Node.JS的
             技术研究和技术推广。




11年4月2日星期六
CNodeJS

             ? blog
              ? http://cnodejs.org/blog/
             ? ask
              ? http://cnodejs.org/ask/

11年4月2日星期六
颁狈辞诲别闯厂北京聚会
               邀请你参加
11年4月2日星期六
时间: 2011.4.16(周六)下午

               地点: 北京betacafe



11年4月2日星期六
11年4月2日星期六

More Related Content

What's hot (11)

Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走
jimmy lin
?
Sdnds tw-meetup-1
Sdnds tw-meetup-1Sdnds tw-meetup-1
Sdnds tw-meetup-1
Fei Ji Siao
?
Mininet Learning Guide(Mininet 学习指南)
Mininet Learning Guide(Mininet 学习指南)Mininet Learning Guide(Mininet 学习指南)
Mininet Learning Guide(Mininet 学习指南)
呈 李
?
Django deploy
Django deployDjango deploy
Django deploy
Andy Dai
?
深入浅出狈辞诲别闯厂
深入浅出狈辞诲别闯厂深入浅出狈辞诲别闯厂
深入浅出狈辞诲别闯厂
sunzhenghua
?
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
Sun Zephyr
?
SITCON 2021 想上網?大展 l3 路由魔法吧!
SITCON 2021 想上網?大展 l3 路由魔法吧!SITCON 2021 想上網?大展 l3 路由魔法吧!
SITCON 2021 想上網?大展 l3 路由魔法吧!
Tsung-Yi Yu
?
我的鲍产耻苍迟耻之旅
我的鲍产耻苍迟耻之旅我的鲍产耻苍迟耻之旅
我的鲍产耻苍迟耻之旅
isnull
?
狈驳颈苍虫+濒耻补在阿里巴巴的使用
狈驳颈苍虫+濒耻补在阿里巴巴的使用狈驳颈苍虫+濒耻补在阿里巴巴的使用
狈驳颈苍虫+濒耻补在阿里巴巴的使用
OpenRestyCon
?
Intro to Rails Workshop ( TA 須知 )
Intro to Rails Workshop ( TA 須知 )Intro to Rails Workshop ( TA 須知 )
Intro to Rails Workshop ( TA 須知 )
Yi-Ting Cheng
?
那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode
Mikimoto Chuang
?
Rails 新人起步走
Rails 新人起步走Rails 新人起步走
Rails 新人起步走
jimmy lin
?
Mininet Learning Guide(Mininet 学习指南)
Mininet Learning Guide(Mininet 学习指南)Mininet Learning Guide(Mininet 学习指南)
Mininet Learning Guide(Mininet 学习指南)
呈 李
?
Django deploy
Django deployDjango deploy
Django deploy
Andy Dai
?
深入浅出狈辞诲别闯厂
深入浅出狈辞诲别闯厂深入浅出狈辞诲别闯厂
深入浅出狈辞诲别闯厂
sunzhenghua
?
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
笔贬笔/狈辞诲别闯厂/搁别诲颈蝉项目实战
Sun Zephyr
?
SITCON 2021 想上網?大展 l3 路由魔法吧!
SITCON 2021 想上網?大展 l3 路由魔法吧!SITCON 2021 想上網?大展 l3 路由魔法吧!
SITCON 2021 想上網?大展 l3 路由魔法吧!
Tsung-Yi Yu
?
我的鲍产耻苍迟耻之旅
我的鲍产耻苍迟耻之旅我的鲍产耻苍迟耻之旅
我的鲍产耻苍迟耻之旅
isnull
?
狈驳颈苍虫+濒耻补在阿里巴巴的使用
狈驳颈苍虫+濒耻补在阿里巴巴的使用狈驳颈苍虫+濒耻补在阿里巴巴的使用
狈驳颈苍虫+濒耻补在阿里巴巴的使用
OpenRestyCon
?
Intro to Rails Workshop ( TA 須知 )
Intro to Rails Workshop ( TA 須知 )Intro to Rails Workshop ( TA 須知 )
Intro to Rails Workshop ( TA 須知 )
Yi-Ting Cheng
?
那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode
Mikimoto Chuang
?

Viewers also liked (6)

Цахим хэрэглэгдэх??н
Цахим хэрэглэгдэх??нЦахим хэрэглэгдэх??н
Цахим хэрэглэгдэх??н
oyunerdene_gansukh
?
Felicidades dulFelicidades dul
Felicidades dul
Edzon Sanchez
?
Proyecto informaticaProyecto informatica
Proyecto informatica
jef-fraga
?
14595 kütahya hastahaneler
14595 kütahya hastahaneler14595 kütahya hastahaneler
14595 kütahya hastahaneler
AlimBey
?
Transi??o BPOS para Office 365 Transi??o BPOS para Office 365
Transi??o BPOS para Office 365
Sara Barbosa
?
Цахим хэрэглэгдэх??н
Цахим хэрэглэгдэх??нЦахим хэрэглэгдэх??н
Цахим хэрэглэгдэх??н
oyunerdene_gansukh
?
Felicidades dulFelicidades dul
Felicidades dul
Edzon Sanchez
?
Proyecto informaticaProyecto informatica
Proyecto informatica
jef-fraga
?
14595 kütahya hastahaneler
14595 kütahya hastahaneler14595 kütahya hastahaneler
14595 kütahya hastahaneler
AlimBey
?
Transi??o BPOS para Office 365 Transi??o BPOS para Office 365
Transi??o BPOS para Office 365
Sara Barbosa
?

Similar to Node js q-con (20)

狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
Websocket talk in nodejs.tw
Websocket talk in nodejs.twWebsocket talk in nodejs.tw
Websocket talk in nodejs.tw
Hsu Ping Feng
?
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tour
myzykj
?
百度实施持续集成之 “工具战争”-Qcon2011
百度实施持续集成之 “工具战争”-Qcon2011百度实施持续集成之 “工具战争”-Qcon2011
百度实施持续集成之 “工具战争”-Qcon2011
Yiwei Ma
?
Node Party HongKong
Node Party HongKongNode Party HongKong
Node Party HongKong
KennyZ
?
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
fangdeng
?
高性能奥别产应用缓存架构设计浅谈
高性能奥别产应用缓存架构设计浅谈高性能奥别产应用缓存架构设计浅谈
高性能奥别产应用缓存架构设计浅谈
Alvin Qi
?
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰
Mu-Fan Teng
?
Node.js X Windows Azure
Node.js X Windows AzureNode.js X Windows Azure
Node.js X Windows Azure
Caesar Chi
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
?
Node js实践
Node js实践Node js实践
Node js实践
myzykj
?
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
?
Douban qcon2009 beijing
Douban qcon2009 beijingDouban qcon2009 beijing
Douban qcon2009 beijing
drewz lin
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub
永昇 陳
?
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStack
Jiang Jun
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
尝耻肠别苍别实践
尝耻肠别苍别实践尝耻肠别苍别实践
尝耻肠别苍别实践
晓锋 陈
?
?語?模型 LLM 應?開發入?
?語?模型 LLM 應?開發入??語?模型 LLM 應?開發入?
?語?模型 LLM 應?開發入?
Wen-Tien Chang
?
狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
Websocket talk in nodejs.tw
Websocket talk in nodejs.twWebsocket talk in nodejs.tw
Websocket talk in nodejs.tw
Hsu Ping Feng
?
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tour
myzykj
?
百度实施持续集成之 “工具战争”-Qcon2011
百度实施持续集成之 “工具战争”-Qcon2011百度实施持续集成之 “工具战争”-Qcon2011
百度实施持续集成之 “工具战争”-Qcon2011
Yiwei Ma
?
Node Party HongKong
Node Party HongKongNode Party HongKong
Node Party HongKong
KennyZ
?
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
fangdeng
?
高性能奥别产应用缓存架构设计浅谈
高性能奥别产应用缓存架构设计浅谈高性能奥别产应用缓存架构设计浅谈
高性能奥别产应用缓存架构设计浅谈
Alvin Qi
?
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰
Mu-Fan Teng
?
Node.js X Windows Azure
Node.js X Windows AzureNode.js X Windows Azure
Node.js X Windows Azure
Caesar Chi
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
iammutex
?
Node js实践
Node js实践Node js实践
Node js实践
myzykj
?
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
?
Douban qcon2009 beijing
Douban qcon2009 beijingDouban qcon2009 beijing
Douban qcon2009 beijing
drewz lin
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStack
Jiang Jun
?
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
My own sweet home!
?
尝耻肠别苍别实践
尝耻肠别苍别实践尝耻肠别苍别实践
尝耻肠别苍别实践
晓锋 陈
?
?語?模型 LLM 應?開發入?
?語?模型 LLM 應?開發入??語?模型 LLM 應?開發入?
?語?模型 LLM 應?開發入?
Wen-Tien Chang
?

Node js q-con