简介

作者: 01562c97bf42 | 来源:发表于2018-03-25 22:33 被阅读0次

    V8引擎用于chrome浏览器解释JS部分

    浏览器类似服务器

    不是独立语言,用js编程

    nodejs没有web服务器

    1.单线程。宏观并发

    在Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了。

    Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。

    另外,带线程的带来的好处,还有操作系统完全不再有线程创建、销毁的时间开销。

    坏处,就是一个用户造成了线程的崩溃,整个服务都崩溃了,其他人也崩溃了。

    2.非阻塞I/O, 不会傻等I/O语句结束,而会执行后面的语句。

    3.事件机制,事件环,不管是新用户的请求,还是老用户的I/O完成,都将以事件方式加入事件环,等待调度。

    ( I/O:读数据库)

    适合开发什么?

    Node.js适合用来开发什么样的应用程序呢?

    善于I/O,不善于计算。因为Node.js最擅长的就是任务调度,如果你的业务有很多的CPU计算,实际上也相当于这个计算阻塞了这个单线程,就不适合Node开发。

    当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与web socket配合,开发长连接的实时交互应用程序。

    比如:

    ● 用户表单收集

    ● 考试系统

    ● 聊天室

    ● 图文直播

    ● 提供JSON的API(为前台Angular使用)

    相关文章

      网友评论

        本文标题:简介

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