hello node

来源:互联网 发布:windows outlook下载 编辑:程序博客网 时间:2024/06/06 01:10

今后可能一段时间不会用JAVA了,改用node,所以开始认真研究一下

node是什么

我目前的认识,node包括一个javascript执行引擎(对v8的封装),同时也是一个web server,还有很多的第三方库,简化app开发

除此以外,node底层有些依赖的库是用C语言写的,比如libev,libeio等,封装了操作系统的IO操作,异步操作等,应用开发者一般不需要关注

node的优势

相对于已经比较熟悉的java ee平台,为什么新产品要选型陌生的node呢?我觉得主要有以下几个好处

1、前端代码越来越多地用到了javascript,在server端也用javascript写代码,有利于server端和client端的代码共享

2、node开发很简单

3、node是事件驱动的单线程模型,性能更优

node的劣势

1、相对于java ee平台,node还相当年轻,所以成熟度还差点(第三方库、最佳实践、资源、社区等)

2、要熟悉node的事件驱动模型,需要转换一下思路

node为什么有性能优势

node有2个关键词:事件驱动、单线程

node的javascript引擎是单线程执行的,只不停地执行不耗时的小函数,遇到耗时操作(数据库访问、网络连接、文件IO等)时,就会转交给底层的库去异步处理,等待执行完毕以后,再通过回调函数回到事件队列里

对比一下tomcat这种每个request一个worker thread的模式。node始终只有一个thread,因此就没有在线程中切换CPU的额外开销,也使用更少的RAM,我想这是node性能更好的主要原因。恰好这是比较适合web app的场景的,如果计算场景是CPU密集型,那么node就不会有性能优势