Node.js初学--了解node.js

概念

打算学习一下node.js,本来应该是学完之后再说一说自己对这个东西的理解,但是吧,又觉得学之前先简单了解一下比较好 于是乎今天逛了半天网站,各种论坛,想搞清楚到底什么是node.js,他的特点在哪里,又是怎么实现这些特点的
首先呢,node.js 是一个基于 Chrome V8 引擎的 JavaScirpt 运行环境。额这是网络上通常的书面语言,具体是什么意思呢,按照我的理解就是,他给js提供了一个能在服务器端跑起来的环境。因为js是一门脚本语言,想让他跑起来需要一个运行环境,就像php需要Apache一样,以前呢,js只能在浏览器上跑,现在他也能在node.js上跑,可以把他认为是一个可以运行js的服务器吧,即可以在node.js上用js写后端。差不多就是这个样子
而我们为什么要用node.js呢,也就是他的特点,当然他能支持js写后端这点就不说了,至于其他的特点,也就是单线程,非阻塞I/O,事件驱动接下来逐一解释一下
单线程,顾名思义只有一个线程,但是经过了解才知道,其实是只有一个主线程,他还是有线程池的,而单线程的话怎么支持高并发呢,这就涉及到下两个概念,传统的语言比如java,在遇到并发操作是,用的处理办法就是给每一个用户分配一个线程,因为他们碰到I/O操作会停止等待I/O操作完成才继续往下进行,而node.js的处理办法是什么呢。
也就是非阻塞I/O和事件驱动,这也能看出来什么意思,就是他碰到I/O操作并不会停下来等待这个I/O操作完成,而是把它给丢进事件处理队列,然后留下一个回调函数,然后自己继续向下执行,当然这些需要I/O操作的事件在幕后会在线程池里拎一个线程给他确保他能够执行,然后所有函数跑完了,再回头看有没有需要执行的事件,也就是I/O已经完成的事件有的话就执行他的回调函数,当然node程序开始时就会创建一个周期循环,然后就一遍一遍的看有没有需要处理的事件,直到所有事件都处理完了node程序结束
也就是说node.js里的操作执行都是异步的,这也就在代码习惯上与其他语言比如java有所不同,,这个以后再细说
综上呢,node.js有一个优点就是对于I/O密集型操作性能比较高,当然这里指的是同样的优化程度下,常用的框架为express
最后呢就是node.js的缺点以及解决方案

  1. 默认不支持多核,可以用cluster解决
  2. 默认不支持服务器集群,可以用node-http-proxy解决
  3. 使用nginx做负载均衡
  4. forever或者node-cluster实现灾难恢复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值