作为一个还算资深的测试人员,除了对测试技术的热衷追求,还有对新技术的渴望。由于工作中涉及大量的性能测试工作,也对所有可以优化性能的开发框架、IO平台都有一定的向往。Node.js恰好是其中之一,也是进来最流行的基于javascript建立的平台。
Node.js 是一种建立在Google Chrome’s v8 engine上的 non-blocking (非阻塞), event-driven (基于事件的) I/O平台。以事件驱动为核心,单线程,单进程。Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。事件驱动机制是Node.js通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切。因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求。可以通过运行多个Node.js进程的方式来有效利用多个CPU。
然而就像试读章节中所说,往往在互联网后端架构,不可能一下子切换到Node.js,比如原有的系统是用java开发的,但在一些非常适合Node.js发挥场景的地方修改为Node.js来开发。那么两者之间的通信就成了一个非常重要的课题,既要保证不同语言的兼容性,又要保证其性能消耗。
试读章节中给我们提供了一个方法,就是使用RabbitMQ队列,当然,也不仅仅限于这种队列,有更多的队列都可以使用。以Node.js作为生产者,以其他语言底层为消费者,反之亦然。这样由于双方都是使用HTTP协议,没有任何障碍;同时又具有了不错的性能,利用HTTP协议的keepalive可以免去多次重复创建和断开连接的开销。
Node.js仍然在不断发展中,相信未来Node.js会成为在javascript端最重要的平台,甚至某些程度上取代java的部分效能。
相关推荐
8.8_总结_|个人主页|Node.js-Koa2框架从零开发仿新浪微博项目实战
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
9.3_开发路由(下)|广场页|Node.js-Koa2框架从零开发仿新浪微博项目实战
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
5.18_总结|用户管理|Node.js-Koa2框架从零开发仿新浪微博项目实战
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展...
Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...
7.3_生成页面_|创建微博|Node.js-Koa2框架从零开发仿新浪微博项目实战
iconv-lite - 纯javascript转换字符编码
14.1_开始|线上环境|Node.js-Koa2框架从零开发仿新浪微博项目实战
8.2_创建路由-微博数据|个人主页|Node.js-Koa2框架从零开发仿新浪微博项目实战
7.4_创建微博API|创建微博|Node.js-Koa2框架从零开发仿新浪微博项目实战
7.6_单元测试和总结|创建微博|Node.js-Koa2框架从零开发仿新浪微博项目实战
8.1_开始和创建页面|个人主页|Node.js-Koa2框架从零开发仿新浪微博项目实战
4.4_总结|技术方案设计|Node.js-Koa2框架从零开发仿新浪微博项目实战
10.4_开发关注接口-完成|关注和取消关注|Node.js-Koa2框架从零开发仿新浪微博项目实战
10.2_开发粉丝列表|关注和取消关注|Node.js-Koa2框架从零开发仿新浪微博项目实战