Vert.x 基于事件和异步的解决方案
程序员文章站
2022-06-25 15:30:25
...
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
下一篇: Shell脚本基础15-while循环