初识NodeJS

作者: JTR354 | 来源:发表于2017-12-31 22:32 被阅读0次

    定义

    • NodeJS is a JavaScript runtime built on Chrome's V8
    • NodeJS uses an event-driven,non-blocking I/O modle[事件驱动,非阻塞IO模型]

    非阻塞I/O

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

    事件驱动

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

    为什么偏爱NodeJS

    • 前端职责范围变大,同一开发体验
    • 在处理高并发、I/O密集场景性能优势明显

    CPU密集 vs I/O密集

    • CPU 密集:压缩、解压、加密、解密
    • I/O密集:文件操作、网络操作、数据库

    web常见场景

    • 静态资源读取
    • 数据库操作
    • 渲染页面

    高并发应对之道

    • 增加机器数
    • 增加每台机器的CPU数 (多核)

    进程(一个运行的程序)

    • 进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位
    • 多进程:启动多个进程,多个进程可以一块执行多个任务

    线程(组成进程的基本单位)

    • 线程:进程内一个相对独立的、可调度的执行单元,与同属一个进程的线程共享进程的资源
    • 多线程:启动一个进程,在一个进程内启动多个线程,这样多个线程也可以一块执行多个任务

    NodeJS工作模型

    nodejs工作模型

    NodeJS的单线程

    • 单线程只是针对主进程,I/O操作系统底层多线程调度
    • 单线程并不是单进程(nodejs可以充分利用多核CPU -->cluster对象)

    常见应用场景

    • Web Server
    • 本地代码构建
    • 实用工具开发

    相关文章

      网友评论

        本文标题:初识NodeJS

        本文链接:https://www.haomeiwen.com/subject/tufzgxtx.html