天天看点

node总结

来了公司实习4个月了。也算是做过node后端开发的人了。。。。。。。。。。。

说下那个总结吧。。。。。。。

1.关于高并发:记得来公司二面的时候,leader就说node的搞并发和java不一样,先总结下这个问题吧。。。

【node是一个线程处理所有请求,java多个请求处理所有请求】

node支持高并发:主线程+异步io线程------高并发的主要原因

java支持高并发:多线程-----线程多,内存开销也大,内存大小固定,支持的线程个数也就固定,并发量小的多

node和java的最大区别就是node是单线程,而java是多线程

因此单线程的 node的优点是:不用维护数据同步,不存在锁的概念,不用关注线程间数据同步的问题,不存在死锁

                               的缺点是:即使cpu的核数在多,他也只能利用一个;一个错误会导致整个服务死掉,cpu如果做大量的计算就会死掉。。。

由于node是主线程,i/o工作线程(异步处理)模型,因此适合做i/o密集型工作,也就是中间层,绝对不适合cpu、密集型工作

2关于node集群架构,我们公司目前使用的架构。。。。

然后静态服务由nginx处理,node只进行数据的处理

node总结

这种架构下,需要去考虑,多个node进程的存活状态的管理,

node总结

3node如何处理高并发?

针对每个并发请求,服务端给请求注册一个激发事件(I/O),并给一个回调函数(这个过程没有阻塞新的连接请求)。

按顺序执行事件处理(I/O),处理完成后执行回调函数,接着执行下一个事件处理(I/O)

4node也是跨平台的。。。。

node的跨平台是基于libuv实现。。。。。。。。其实node最底层是c,c不是跨平台的,只是c实现了跨平台的兼容。c是通过生成不同机器上的代码实现的跨平台。