欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vert.x 基于事件和异步的解决方案

程序员文章站 2022-06-25 14:14:40
...

a

 

Vert.x框架基于事件和异步,依托于全异步Java服务器Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。

 

一个Vert.x有一个或多个事件循环线程组成,线程最大数量为主机有效的CPU核数。

 

Vert.x的事件模型,有如下几个特点:

1.非阻塞处理请求,异步执行阻塞程序,保证了请求处理的高效性。

2.使用Event Bus事件总线来进行通讯,可以轻松编写出分布式、松耦合、高扩展性的程序。

3.使用Event Bus事件总线是Vert.x真正实现了多语言支持的基础. Java、JavaScript、Ruby、Python;已经支持了Postgres、MySQL、MongoDB、Redis等常用组件.

 

异步无锁编程——经典的多线程编程模型能满足很多Web开发场景,但随着移动互联网并发连接数的猛增,多线程并发控制模型性能难以扩展,同时要想控制好并发锁需要较高的技巧,目前Reactor异步编程模型开始跑马圈地,而Vert.x就是这种异步无锁编程的一个首选;

对各种IO的丰富支持——目前Vert.x的异步模型已支持TCP、UDP、FileSystem、DNS、EventBus、Sockjs等;

 

 

别人的一些实践:

 https://segmentfault.com/a/1190000011763020 

https://www.jianshu.com/p/fbe0430959e8 利用Vertx构建简单的API 服务、分布式服务

 

Vertx-Java命令行运行

 

//EchoServer.java
import io.vertx.core.AbstractVerticle;
public class EchoServer extends AbstractVerticle {
    public void start() {
        vertx.createHttpServer().requestHandler(req -> {
            req.response()
            .putHeader("content-type", "text/plain")
            .end("Hello from Vert.x!");
        }).listen(8080);
    }
}

 

vertx run EchoServer.java 
curl http://localhost:8080/

 

Vertx-Java main方法方式运行

 

//pom.xml
...
<dependencies>
    <dependency>
        <groupId>io.vertx</groupId>
        <artifactId>vertx-core</artifactId>
        <version>3.1.0</version>
    </dependency>
</dependencies> 

 

//App.java
import io.vertx.core.Vertx;
public class App {
    public static void main(String[] args) {
        Vertx.vertx().createHttpServer().requestHandler(req -> req.response().
        end("Hello World!")).listen(8080);
    }
}

 

In IDE, Run AS Java Application
curl http://localhost:8080/

 

 

 

 

 

b