之前对这部分的内容很感兴趣,没想到读起来有点晦涩,还是因为对服务器的知识不是很了解。

说道服务器一般人都会想到tomcat或者Jboss或者weblogic,现在流行起来的Node总让人不太放心,JS代码也能做服务器?其实不然,首先一个误区就是Node的服务器是JS写出来的....其实它只有表面暴露给用户使用的模块是用js写的,底层的很多东西还是由C/C++完成的。如果运行在不同的操作系统上,node还会基于操作系统切换底层的实现方式。

再说说Nodejs的特性——最让人印象深刻的就是单线程事件驱动....

首先单进程单线程,就会出现CPU利用不足的问题。毕竟现在的电脑基本都不是单核的,那么你只有一个进程跑,肯定有个核是在那休息的,这样效率上会让人觉得不够高。因此,Nodejs提供了一个模块——child_process,它可以创建子进程,这样就可以利用余下的CPU资源了。其实如果不是很庞大的应用,单进程就足够了,何必引入多线程增加复杂性呢。

另外,单进程也会有安全性的问题。比如一旦程序出现BUG,就会导致整个应用的崩溃。如果是线上的应用,那肯定会让人很头疼....这就证明你服务不可靠啊!因此就出现了一种方案,启动一个没有业务含义的主进程,通过这个主进程创建子进程进行业务的响应。这样既避免了单进程的安全问题,也方便进行负载均衡。只不过这个主进程一旦死掉了,整个应用一样会挂掉。但是子进程死掉了,完全可以捕获到异常信息,重新创建继承,恢复集群。

如何做一个高扩展、高可用的集群,这就涉及到集群的知识了,由于知识网不够扎实,就不能扩展了....平时也不会用Node当做生产环境的服务器,因此就不做过多的研究啦....先总结到这吧!

为什么nodejs是单进程的_Nodejs·进程相关推荐

  1. 为什么nodejs是单进程的_nodejs真的是单线程吗?

    一.多线程与单线程 像java.python这个可以具有多线程的语言.多线程同步模式是这样的,将cpu分成几个线程,每个线程同步运行. 而node.js采用单线程异步非阻塞模式,也就是说每一个计算独占 ...

  2. 为什么nodejs是单进程的_Nodejs探秘:深入理解单线程实现高并发原理

    导语:在我接触Nodejs的时候,听的最多的关键字就是:事件驱动.非阻塞I/O.高效.轻量,是单线程且支持高并发的脚本语言.可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,自己也在 ...

  3. nodejs 当前文件路径_NodeJs的几种文件路径

    上次写删除文件夹的时候用到了fs模块,也集中用到了很多种路径,当时就想写一下,在Node中使用各种路径的问题,于是就简单写了一下,可以从 这里 获取demo源代码. 刚写Node的时候经常会遇到这种情 ...

  4. nodejs 获取文件路径_Nodejs读取文件时相对路径的正确写法(使用fs模块)

    在开发Nodejs中,我们往往最常用的模块就是fs核心模块(fs.readFile)来读取文件.代码如下: 但是运行之后,并没有按照想象中一样,读取test.html文件内容,这是一个bug,坑爹的玩 ...

  5. nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...

    本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作.分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,no ...

  6. nodejs的mysql模块_Nodejs的mysql模块学习(一)

    介绍 mysql npm包 是一个nodejs的模块,由JavaScript编写 安装 npm install mysql 建立连接 var mysql = require('mysql');//引用 ...

  7. nodejs进入mysql数据库_nodejs简单访问及操作mysql数据库的方法示例

    本文实例讲述了nodejs简单访问及操作mysql数据库的方法.分享给大家供大家参考,具体如下: var mysql = require('mysql'); //调用MySQL模块 mysql模块要安 ...

  8. nodejs json转对象_nodejs读取xlsx格式文件

    # nodejs读取xlsx格式文件 安装 npm i node-xlsx -D // 或者 yarn add node-xlsx -D 使用 读取表格数据,并生成json对象 /*** @auth ...

  9. nodejs和java对比_nodejs与java的区别是什么?

    node.js与java都是服务器语言,但是两者存在很大区别.下面本篇文章就来给大家介绍一下node.js与java之间的区别,希望对大家有所帮助. nodejs与java的区别 1).Node.js ...

最新文章

  1. C# 8.0的三个令人兴奋的新特性
  2. 【原】DjianGo Windows7下的安装
  3. 将Java程序变成可执行文件的简单方法
  4. 关于StoneAge项目的敏捷
  5. Win32汇编扩展教程
  6. 不允许对系统目录进行即席更新_还不懂Docker?一个故事安排的明明白白!
  7. 设置linux防火墙服务不开机启动,Linux关闭防火墙并设置开机启动/不启动
  8. 是选择Keras还是PyTorch开始你的深度学习之旅呢?
  9. php正则表达式经典实例,php半小时精通正则表达式
  10. 计算机在英语课中的应用 博客,信息技术在小学英语教学中的应用
  11. CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树
  12. 切图具体需要切什么内容_什么是切图?网页制作中的切图是什么?
  13. GetLastError返回代码含义
  14. 微信小程序图片上传并移除
  15. keil5.155.18版本兼容keil4安装包百度云链接
  16. win10打开视频显示服务器运行失败,apache启动失败,详细教您快速解决Win10系统apache启动失败...
  17. 基于TCP的socket详解(Linux系统)
  18. 让32位Eclipse和64位Eclipse同时在64的Windows7上运行
  19. 阿里云镜像站DNS——Linux配置方法
  20. latch: cache buffers chains 阻塞 buffer busy waits

热门文章

  1. 深度学习核心技术精讲100篇(七)-keras 实战系列之深度学习模型处理多标签(multi_label)
  2. 机器学习算法与Python实践之(五)k均值聚类(k-means)
  3. Java中导入错误的jar所引发的问题
  4. 关系和纽带:六度分割理论【存疑2处】
  5. 万亿级日志与行为数据存储查询技术剖析
  6. spring mvc DispatcherServlet详解之前传---FrameworkServlet
  7. Android .so .aar..jar文件的使用方式
  8. 【风险管理】金融产品一站式解决方案
  9. Transformer 在美团搜索排序中的实践
  10. Dlib模型人脸特征检测原理及demo