Introduction to NodeJS

  • 561 views
Uploaded on

Introduction to NodeJS, 1st TechParty@UIC, Zelong Liang

Introduction to NodeJS, 1st TechParty@UIC, Zelong Liang

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
561
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
4

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

Transcript

  • 1. Node.js
  • 2. Who am I?• @龙mol_才不是小眼睛
  • 3. Introduction• Node.js是什么?• Node.js的优势与特点是什么? – 什么是V8引擎 – 什么是非阻塞模式• Node.js能解决什么问题?• Node.js实践?
  • 4. Node.js是什么• Node.JS 是资深 C 程序员 Ryan Dahl的作 品,依据 Google 著名的开源 JavaScript 引擎 V8 来进行二次开发的 Web I/O 服务 器• 轻量级WebServer• 脱离了浏览器在后端运行的 Javascript代码• 运行坏境、库
  • 5. 优势与特点• 单进程(single-thread)• 异步非阻塞(non-blocking)• 事件驱动(event-based)• V8引擎• 性能很好• 第三方模块丰富• 速度、灵活
  • 6. V8引擎• V8是一个由丹麦Google开 发的开源JavaScript引 擎,用于Google Chrome 中。• V8在执行之前将 JavaScript编译成了机器 码,而非字节码或是直译 它,以此提升效能。并且 使用了如内联缓存(inline caching)等方法来提高性 能。• 有了这些功能, JavaScript程序与V8引擎 的速度媲美二进制编译。
  • 7. 非阻塞模式• 在非阻塞模式下利用socket事件的消息机 制,Server端与Client端之间的通信处于异 步状态。• 通常需要从 CSocket类派生一个新类,派生 新类的目的是重载socket事件的消息函数, 然后在socket事件的消息函数中添入合适的 代码以完成Client端与Server端之间的通信。• 与阻塞模式相比,非阻塞模式无需创建一 个新线程。
  • 8. 性能• Python:Tornado• Go• Java:Netty• Nodejs
  • 9. 第三方模块• 官方共收集列出1152个第三方模块! – 涵盖了Web、Database、XML、Web Sockets & Ajax、API clients、TCP/IP、CSS Enginess 等等,几乎涉及网络开发中需要的功能模块。 管理工具:npm 管理着4427+模块,想用哪个用哪个,妈妈在也 不用担心我没有模块用!
  • 10. Node.js能解决什么问题• Node 公开宣称的目标是 “旨在提供一种简 单的构建可伸缩网络程序的方法 ”。
  • 11. E.g.• 在 Java™ 和 PHP 这类语言中,每个连接 都会生成一个新线程,每个新线程可能需 要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数 量是 4,000 个用户。随着您的客户群的增 长,如果希望您的 Web 应用程序支持更多 用户,那么,您必须添加更多服务器。当 然,这会增加服务器成本、流量成本和人 工成本等成本。• 瓶颈是:服务器能够处理的并发连接的最 大数量。
  • 12. A• 解决这个问题的方法是:更改连接到服务 器的方式。每个连接发射一个在 Node 引擎 的进程中运行的事件,而不是为每个连接 生成一个新的 OS 线程(并为其分配一些 配套内存)。Node 声称它绝不会死锁,因 为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器 能支持数万个并发连接。
  • 13. Node.js实践• 不受限制地访问文件和网络资源• 前后端代码复用• 解决跨域访问的问题
  • 14. 常规Web应用
  • 15. 实时性强的网络应用
  • 16. 实时性强的网络应用
  • 17. Q&A
  • 18. Thanks!