同样是基于EDA事件驱动编程,Vert.x.竟然比Node.js快好几倍?来自Inside Vert.x. Comparison with Node.js. | Architects Zone一文测试如下:
下图是静态文件,差别更大
Vert.x分Java Ruby和Groovy几个版本,其中Vert.x.java似乎是最快的。
Event-based Programming Model
如同Node.js Vert.x提供一个事件驱动编程模型,使用Vert.x作为服务器时,程序员只要编写事件处理器event handler即可. 当TCP socket有数据时,event handler理解被创建调用,另外它还可以在以下几种情况激活: '当事件总线Event Bus接受到消息时,' '当接收到HTTP消息时,' 当一个连接断开时',' '当计时器超时时.'
Event Loops
Vert.x 内部有一个线程池. Vert.x会根据CPU核数匹配线程此的数目。
每个线程执行一个Event Loop. Event Loop能确保事件在循环中轮回. 例如,它会确证socket是否有数据可读事件,如果有, Vert.x 将调用相应的event handler 。
Message Passing
一个Vert.x中有很多 Verticles, Verticles之间使用事件总线Event Bus联系. Verticle类似 Erlang的actor模型.
Shared data
Message passing消息传递当然有用,但是它并不总是并发环境最好的,缓存受到普遍使用, Vert.x 提供一个分享的缓存Map.
面对Vert.x和Scala/Erlang的Actor以及扑面而来的EDA , Java领域王者Spring再也坐不住了,终于出手推出Reactor。