zoukankan      html  css  js  c++  java
  • NodeJS 极简教程 <1> NodeJS 特点 & 使用场景

    NodeJS 极简教程 <1>  NodeJS 特点 & 使用场景

    NodeJS 极简教程 <1> NodeJS 特点 & 使用场景

     

    1. NodeJS是什么

    1.1 Node.js is a JavaScript runtime build on Chrome's V8.

    Node.js并不是一门语言,JavaScript才是。Node.js是一个runtime,运行在Chrome的V8引擎上,且Node.js并不能使用JavaScript的全集,它不能使用DOM,BOM等浏览器API。

     

    1.2 Node.js uses an event-driven, non-blocking I/O model.

    事件驱动,非阻塞I/O


    2. 非阻塞I/O

    • 阻塞I/O:I/O时进程休眠等待I/O完成之后再进行下一步。
    • 非阻塞I/O:I/O时函数立即返回,进程不等待I/O结果。

    3. 事件驱动

    • I/O等异步操作结束后通知主进程
    • 观察者模式

    4. NodeJS的优势

    4.1 处理高并发、I/O密集场景优势明显。适用于web。

    首先知道一个事实(常识):计算机CPU运算非常之快,应用的性能瓶颈主要出在I/O上。

     

    CPU密集与I/O密集:

    • CPU密集:计算、加密解密、压缩、图像处理等
    • I/O密集: 文件操作、网络操作、数据库操作等

    web场景:

    • 静态资源获取
    • 数据库操作频繁
    • 渲染页面

    5. 高并发应对之道:

    • 增加机器数
    • 使用更好的机器:多核cpu机器
    • 使用更好的模型

     

    线程与进程

    • 进程:是计算机中的程序关于某数据集合行的一次运行活动,是系统进行资源分配和调度的基本单位。
    • 多进程:启动多个进程,多个进程一块执行多个任务。
    • 线程:进程内一个相对独立的、可调度的执行单元,与同属一个进程的线程共享资源
    • 多线程:启动一个进程,在进程内启动多个线程,这样,多个线程可以同一时间执行多个任务。

     

    Java处理高并发:

    每来一个请求,就会因为IO操作而阻塞住,java采用多进程模式,为每个请求分配一个进。其劣势:

    • CPU分配的最大进程数是有限的,超过限度就要排队。
    • CPU大量时间处于空闲状态(IO操作占大头)。

     

    nodejs处理高并发:

    • cpu利用率高,IO操作不会阻塞cpu。
    • event loop 主线程:cpu只开一个进程, 进程内也只开一个线程。
    • 所谓的nodejs单线程指的是主线程,IO操作是系统底层多线程调度。
    • nodejs与多核:使用cluster模块可利用CPU多核,在每个核上启动一个进程,不会浪费CPU多核能力。

     


    6. 使用场景:

    • web server: 高并发,IO密集
    • 前端代码本地构建:低并发,cpu计算量大。从性能角度考虑,nodejs并不适合。但是由于前端工程师更熟悉js语法,前端代码构建打包等工具中nodejs应用非常广。
    漫思
  • 相关阅读:
    正则表达式与领域特定语言(DSL)
    css兼容性问题的整理
    ASP.NET Web API 2.0新特性:Attribute Routing1
    架构讨论
    用Jekyll在github上写博客
    日历插件(beta)
    SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
    Maven中有三大模块
    hdu 2444
    4.4 从一个表向另外的表中复制行
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/13406339.html
Copyright © 2011-2022 走看看