zoukankan      html  css  js  c++  java
  • node.js 是什么

    node.js 到底是什么?
    node.js 是一个 js 的运行环境和 api 集合,为本来只能在浏览器沙盒中运行的 js 提供了与操作系统进行交互的能力,从此 js 也和其它的后台语言一样可以操作文件,监听网络端口,读写数据库,与操作系统底层交互了。
    为什么要有 node.js 呢?
    因为传统的同步模型的服务系统很难应对 C10K 问题,也就是很难设计出能轻松并发上万连接的服务端。node.js 通过提供原生的异步服务模型,能够轻松实现高并发服务器,从前需要各种优化才能实现的并发性能,现在 node.js 原生就能支持。
    node.js 为什么能高并发?
    要回答这个问题,首先要问为什么其它的同步模型的服务端为什么难以实现高并发?同步模型服务器在收到一个请求以后,就要创建一个新的线程来处理用户请求,这个线程有创建开销,运行时有内存占用,执行时对于文件操作和数据库读取需要阻塞后续代码,处理完请求之后需要再销毁相应线程,即使使用线程池来操作,也有线程切换开销,而且多线程编程对于开发者的心智要求也很高,很容易写出有问题的代码。所以,同步模型的时间开销和内存开销在并发量上来之后会线性增加,很快就会达到服务器无法支撑的地步,只有通过特殊优化才能支撑起高并发。
    node.js 提供了大量的异步 api,使典型的服务端非阻塞 I/O 操作比如网络请求,文件读写,数据库读写等可以异步执行,I/O 的操作在底层的线程池进行,操作完成之后通知主线程,再由主线程处理网络请求。不用每一个请求来临时就创建一个新的线程,节省了线程创建和销毁的时间开销,也减少了内存的占用。有可能在低并发量的时候不如同步模型,但是在并发量高的时候,因为不会随着并发量的提高创建对应数量的线程,因此避免了很多创建线程的时间和线程占用的内存空间,这样就可以使用有限的服务器资源提供更高的并发性能了。
  • 相关阅读:
    mtext中的las参数的作用
    并行与CPE
    根据局部性得出最优矩阵乘法写法
    cache中的thrashing问题和应对办法
    csapp(3e)的bomblab的phase_6详解(没有详细到逐行解析的程度)
    计划
    遇到问题怎么处理?
    数据对齐的几问
    python进阶(八、mysql:完整性约束)
    python进阶(七、mysql:表操作、数据操作、数据类型)
  • 原文地址:https://www.cnblogs.com/lswit/p/10083804.html
Copyright © 2011-2022 走看看