Vert.x给了你很多塑造你的应用程序和代码的自由。但它也提供了方便开始编写Vert.x应用程序的语法块,并提供了一个简单的、可扩展的、类似actor的部署和并发模型。Verticles是由Vert.x部署和运行的代码块。一个应用程序,例如一个微服务,通常由许多在同一时间内运行在同一个Vert.x实例中的verticle实例组成。verticle通常会创建服务端或客户端,注册一组处理程序(即Handler),并封装系统业务逻辑的一部分。

常规的verticles都是在Vert.x的事件回环中执行,从不会阻塞。Vert.x确保每一个verticle总时由相同的线程执行,并且不会并发的执行,因此避免了同步构造。在Java中,verticle是一个扩展自抽象类 Verticle 的类:

import io.vertx.core.AbstractVerticle;
public class MyVerticle extends AbstractVerticle {
    @Override
    public void start() throws Exception {
        // Executed when the verticle is deployed
    }
    @Override
    public void stop() throws Exception {
        // Executed when the verticle is un-deployed
    }
}

Worker Verticle

与普通的verticles不同,Worker verticles不是在事件回环上面执行的。这意味着它们可以执行阻塞代码。然而, 这限制了你的可扩展性。

Verticles可以访问vertx成员变量(它由AbstractVerticle类提供的,一定要参考源码)来创建服务端和客户端,并与其他Verticles交互。Verticles还可以部署其他的Verticles,配置它们,并设置要创建的实例的数量。这些实例与不同的事件循环(实现了多反应堆模式)相关联,Vert.x在这些实例之间平衡负载。

results matching ""

    No results matching ""