Vert.X(1):简介

最开始了解到Vert.X是在Web Framework Benchmarks中看到,性能超群的一个web框架,但说实话知名度不是特别高。

Figure 1: Vert.X Benchmark
Vert.X Benchmark

而官网介绍也谦逊的很,甚至都说自己不算一个web框架,而是一个“tool-kit”:

Eclipse Vert.x is a tool-kit for building reactive applications on the JVM.

特点

Vert.x采取的是事件驱动的非阻塞异步响应模型,而不是类似Servlet一样为每一个连接分配一个新的线程。这样做的好处就是可以利用少量的线程处理很多的并发连接。而采取blocking IO的线程在等待IO操作完成的时候,线程会被挂起,而后唤醒。但是这个操作本身也是有一定的开销的,当线程数很大的时候这个开销就尤为明显。

简单来说,Vert.x就是JVM版本的NodeJS,但一个比较大的区别就是NodeJS是单线程模型的,而Vert.x可以有多个event loop,因此能够更加有效的利用多核的优势。

Vert.x的另一个特点就是提供了多种语言的绑定(并不仅仅是简单的wrap一下,而且充分利用了各个语言的特点):

什么是响应式(Reactive)

根据The Reactive Manifesto的定义,一个响应式的系统具有四个特点:

组件

Vert.x又包含了很多个部分:

Web组件

数据访问

数据访问组件提供了一系列的异步访问client,当然也可以直接使用原始的数据库驱动。支持的数据库有:

Reactive

提供了各种创建响应式应用程序的组件。

Microservices

创建微服务的组件:

MQTT

提供了MQTT的server和client端组件。

Authentication and Authorisation

认证授权相关:

Messaging

其他

使用

Hello World

public class VertxEcho {
    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();

        vertx.createNetServer()
            .connectHandler(socket -> {
                socket.handler(buffer -> {
                    socket.write("Hello:" + buffer);
                });
            })
            .listen(3000);
    }
}