Your SlideShare is downloading. ×
分享平台构建之旅
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

分享平台构建之旅

261
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
261
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. 独爽不如众乐 分享平台构建之旅
    • 2. 文龙@maxbbn交易&新业务评价
    • 3. fenxiang.taobao.net
    • 4. 服务器端
    • 5. 服务器端• 应用服务器• 前端服务器
    • 6. 服务器端• 应用服务器• 前端服务器
    • 7. 服务器端• 应用服务器• 前端服务器
    • 8. NodeJS, 啥?
    • 9. NodeJS, 啥?• server-side V8
    • 10. NodeJS, 啥?• server-side V8• event-driven 事件驱动
    • 11. NodeJS, 啥?• server-side V8• event-driven 事件驱动• non-blocking I/O 无阻塞的IO
    • 12. NodeJS, 啥?• server-side V8• event-driven 事件驱动• non-blocking I/O 无阻塞的IO• single threaded, efficient 单线程
    • 13. NodeJS, 啥?• server-side V8• event-driven 事件驱动• non-blocking I/O 无阻塞的IO• single threaded, efficient 单线程• freaking fast 真XX快
    • 14. 不擅长的• 发送大量静态文件• 密集的计算(use Worker)
    • 15. a Simple Servervar http = require(http);http.createServer(function (req, res) { res.writeHead(200, {Content-Type: text/plain}); res.end(Hello Worldn);}).listen(1337, "127.0.0.1");console.log(Server running at http://127.0.0.1:1337/);
    • 16. Nginx, Who?
    • 17. Nginx, Who?• HTTP 和 反向代理 服务器
    • 18. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器
    • 19. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器• Non-Blocking 无阻塞
    • 20. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器• Non-Blocking 无阻塞• Event-Driven 事件驱动
    • 21. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器• Non-Blocking 无阻塞• Event-Driven 事件驱动• Single threaded 单线程
    • 22. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器• Non-Blocking 无阻塞• Event-Driven 事件驱动• Single threaded 单线程• Resource efficient 高效
    • 23. Nginx, Who?• HTTP 和 反向代理 服务器• IMAP/POP3/SMTP 代理服务器• Non-Blocking 无阻塞• Event-Driven 事件驱动• Single threaded 单线程• Resource efficient 高效• Highly modular 高度模块化
    • 24. Work Together
    • 25. Work Together fenxinag.taobao.net
    • 26. Work Together fenxinag.taobao.net
    • 27. Work Together fenxinag.taobao.net :80
    • 28. Work Together fenxinag.taobao.net :80 Nginx
    • 29. Work Together fenxinag.taobao.net :80 Nginx
    • 30. Work Together fenxinag.taobao.net :80 Nginx proxy to:8000
    • 31. Work Together fenxinag.taobao.net :80 Nginx proxy to:8000 NodeJS Server
    • 32. Work Together fenxinag.taobao.net :80 Nginx proxy to:8000 NodeJS Server
    • 33. Work Together fenxinag.taobao.net :80 Nginx proxy to:8000 NodeJS Server
    • 34. Work Together fenxinag.taobao.net :80 Static Nginx File proxy to:8000 NodeJS Server
    • 35. Work Together fenxinag.taobao.net :80 Static Nginx File proxy to:8000 NodeJS Server
    • 36. Work Together fenxinag.taobao.net :80 Static Nginx File proxy to:8000 NodeJS Server
    • 37. 配置nginx很简单server { listen 80; server_name fenxiang.taobao.net; location / { proxy_pass http://localhost:8000; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; } }
    • 38. nginx dealing with the static filesserver { listen 80; server_name fenxiang.taobao.net; location ~* .(png|jpg|gif|zip|ppt|rar|pdf|js|css|less)$ { root /home/wwwroot/fenxiang/public; } location / { proxy_pass http://localhost:8000; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; } }
    • 39. 数据库
    • 40. 星系 发的故事
    • 41. • noSQL | Document Based 文档型数据库 星系 发的故事
    • 42. • noSQL | Document Based 文档型数据库• store in JSON; query in json. 星系 发的故事
    • 43. • noSQL | Document Based 文档型数据库• store in JSON; query in json.• Speak Javascript 不说鸟语 星系 发的故事
    • 44. VS
    • 45. VS• 都特XX快
    • 46. VS• 都特XX快• 都说 Javascript
    • 47. VS• 都特XX快• 都说 Javascript• 都喜欢 JSON
    • 48. VS• 都特XX快• 都说 Javascript• 都喜欢 JSON• 都是前端的好朋友
    • 49. 诺德和 哥
    • 50. 诺德和 哥N M
    • 51. Web framework
    • 52. a Simple Servervar http = require(http);http.createServer(function (req, res) { res.writeHead(200, {Content-Type: text/plain}); res.end(Hello Worldn);}).listen(1337, "127.0.0.1");console.log(Server running at http://127.0.0.1:1337/); 原生的HTTPServer比较 弱 只提供非常有限的功能 不过,如何去扩展我们 的server 。
    • 53. a Simple Servervar http = require(http);http.createServer(function (req, res) { res.writeHead(200, {Content-Type: text/plain}); 回调 res.end(Hello Worldn);}).listen(1337, "127.0.0.1");console.log(Server running at http://127.0.0.1:1337/); 原生的HTTPServer比较 弱 只提供非常有限的功能 不过,如何去扩展我们 的server 。
    • 54. Connect• 中间件框架• 内置多达18个中间件• 精选第三方插件
    • 55. • logger • methodOverride• csrf • responseTime• compress • staticCache• basicAuth • static• bodyParser • directory• json • vhost• urlencoded • favicon• multipart • limit• cookieParser • query• session • errorHandler• cookieSession
    • 56. what is middleware? 回调function (req, res) {}
    • 57. what is middleware?请求 回调进入 function (req, res) { }
    • 58. what is middleware?请求 响应 回调进入 发送 function (req, res) { }
    • 59. what is middleware?请求 响应 回调进入 发送 function (req, res) { }
    • 60. what is middleware? query请求 响应 回调进入 发送 function (req, res) { }
    • 61. what is middleware? query请求 响应 回调进入 发送 function (req, res) { req.query 对象 ✌ }
    • 62. what is middleware? session query请求 响应 回调进入 发送 function (req, res) { req.query 对象 ✌ }
    • 63. what is middleware? session cookie parser query请求 响应 回调进入 发送 function (req, res) { req.query 对象 ✌ }
    • 64. what is middleware? session cookie parser query请求 响应 回调进入 发送 function (req, res) { req.query 对象 ✌ req.session 对象 ✌ req.cookie 对象 ✌ }
    • 65. what is middleware? compress session cookie parser query请求 响应 回调进入 发送 function (req, res) { req.query 对象 ✌ req.session 对象 ✌ req.cookie 对象 ✌ }
    • 66. what is middleware? compress session cookie parser query请求 回调 响应 发送进入 function (req, res) { req.query 对象 ✌ req.session 对象 ✌ req.cookie 对象 ✌ }
    • 67. • Web 发框架
    • 68. • Web 发框架• 基于Connect
    • 69. • Web 发框架• 基于Connect• 轻量高效, 满足日常所需
    • 70. • Web 发框架• 基于Connect• 轻量高效, 满足日常所需• 易扩展
    • 71. • Web 发框架• 基于Connect• 轻量高效, 满足日常所需• 易扩展• 路由 Routers
    • 72. 动手构建
    • 73. REST 风格的接口
    • 74. 分享平台提供的资源
    • 75. 分享平台提供的资源 分享 * 分享会
    • 76. 分享平台提供的资源 分享 * 分享会
    • 77. 分享平台提供的资源 分享 * 分享会 分享会 数据模式 { subject : {type:String, required:true}, shares : [ { type: Schema.ObjectId, ref: share } ], ... }
    • 78. REST 特点• 为所有“事物”定义ID• 将所有事物链接在一起• 使用标准方法• 资源多重表述• 无状态通信
    • 79. Why REST• 标准化,容易理解• 客户端兼容• express-resource
    • 80. 类 Resouseful操作 键 HTTP方法 路径新建 new GET /share/new创建 create POST /share更新 update PUT /share/000001获取 show GET /share/000001索引 index GET /share删除 delete DELETE /share/000001
    • 81. http://fenxiang.taobao.net /shareset/new
    • 82. http://fenxiang.taobao.net/share/4f44f43c0eca437223000386
    • 83. http://fenxiang.taobao.net/shareset/share_20120224
    • 84. 索引接口使用http://fenxiang.taobao.net/share?size=8&sort=viewCount
    • 85. 索引接口使用http://fenxiang.taobao.net/share?tags=优化
    • 86. 展现层使用资源接口,将资源以一些形式展示出来
    • 87. • MVC
    • 88. • MVC • Backbone - mustache
    • 89. • MVC • Backbone - mustache • 替代方案 Kissy mvc,Kissy Template
    • 90. • MVC • Backbone - mustache • 替代方案 Kissy mvc,Kissy Template• Bootstrap from twitter
    • 91. • MVC • Backbone - mustache • 替代方案 Kissy mvc,Kissy Template• Bootstrap from twitter• LESS
    • 92. 版本管理
    • 93. 版本管理• git
    • 94. 版本管理• git• 分支管理
    • 95. 版本管理• git• 分支管理 • master (当前部署)
    • 96. 版本管理• git• 分支管理 • master (当前部署) • dev ( 发分支,待部署)
    • 97. 版本管理• git• 分支管理 • master (当前部署) • dev ( 发分支,待部署) • feature1 (特性分支)
    • 98. 版本管理• git• 分支管理 • master (当前部署) • dev ( 发分支,待部署) • feature1 (特性分支) • feature2 (特性分支)
    • 99. 版本管理• git• 分支管理 • master (当前部署) • dev ( 发分支,待部署) • feature1 (特性分支) • feature2 (特性分支)• git hook 自动更新和部署
    • 100. 通过 hooks 自动更新和部署#!/bin/sh//进入部署文件夹cd ~/ratting-app/unset GIT_DIR//更新文件git pull//安装依赖npm install -d//重启应用forever restart /home/git/app/server.jsecho success...exec git-update-server-info
    • 101. UED一直以来有很好的分享传统我们有很多分享会
    • 102. 商品线-交易线分享会 一淘分享会 UED一直以来有很好的 分享传统 我们有很多分享会
    • 103. 我们也认识到分享要淀下来
    • 104. 我们也认识到分享要淀下来
    • 105. Thank you!• 欢迎一起 发,一起来“玩”各 新技术• 欢迎加入 N-O-D-E 群• 分享平台期待你的分享
    • 106. 相 链接• nodejs http://nodejs.org• Expressjs http://expressjs.com/• Connect http://www.senchalabs.org/connect/• MongoDB http://www.mongodb.org/• Mongoose http://mongoosejs.com/• Nginx http://nginx.org/• momentjs http://momentjs.com• 深入浅出REST http://www.infoq.com/cn/articles/rest-introduction

    ×