• 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 的操作在底层的线程池进行,操作完成之后通知主线程,再由主线程处理网络请求。不用每一个请求来临时就创建一个新的线程,节省了线程创建和销毁的时间开销,也减少了内存的占用。有可能在低并发量的时候不如同步模型,但是在并发量高的时候,因为不会随着并发量的提高创建对应数量的线程,因此避免了很多创建线程的时间和线程占用的内存空间,这样就可以使用有限的服务器资源提供更高的并发性能了。
  • 相关阅读:
    reids 数据库学习
    java 8 学习二(Lambda表达式)
    java 8 学习一(概述)
    update Select 从查询的结果中更新表
    从一段文字中提取出uri信息
    Hadoop3.0磁盘均衡器
    MapReduce 程序mysql JDBC驱动类找不到原因及学习hadoop写入数据到Mysql数据库的方法
    yarn计算一个节点容量及其配置项
    YARN的capacity调度器主要配置分析
    1084 Broken Keyboard (20 分)字符串
  • 原文地址:https://www.cnblogs.com/lswit/p/10083804.html
Copyright © 2020-2023  润新知