Vert.x

近年来,移动网络、社交网络和电商的兴起,使各大服务提供商的客户端请求数量激增,传统服务器架构已不堪重负,致使基于事件和异步的解决方案备受追捧,如Nginx、NodeJS。Vert.x框架基于事件和异步,依托于全异步Java服务器Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。

事件模型

Vert.x是事件驱动的,其处理请求的高性能也是基于其事件机制。Vert.x的事件机制中有几个非常重要的概念:Event Loop、Event Loop Vertical、Worker Vertical、Event Bus、Vert.x Module。
Event Loop:即事件循环,是由Vert.x启动的事件处理线程,也是Vert.x项目对外开放的入口,Vert.x由此接收请求事件。一个Vert.x有一个或多个事件循环线程组成,线程最大数量为主机有效的CPU核数。
Event Loop Vertical:事件的业务处理线程,存在于Event Loop中,用于处理非阻塞短任务。
Worker Vertical : 事件的业务处理线程,用于处理长任务阻塞任务。
Event Bus:即事件总线,是Vert.x事件模型中最核心的部分,所有的事件都经由事件总线进行分发,包括Vertical之间的通信事件。
Vert.x Module : Vert.x项目模块,一个应用通常由多个模块组成,每个模块一般包含多个Vertical。
 

事件模型流程

Vert.x以非阻塞IO的思想来实现高性能,非阻塞IO的实现,基于Event Loop Vertical和Worker Vertical的分离,在Vert.x中,Event Loop用于接收,并将短业务操作交由其内部的Vertical来处理,该模块是非阻塞的,这样可以保证请求的处理效率;阻塞任务通过Vert.x的事件机制脱离当前线程,转移到Worker Vertical中执行,并执行结果返回给Event Loop Vertical。 这一过程完成的核心是Event Bus,Event Bus中注册了所有的事件,通过事件匹配完成事件转移和结果返回,从而将整个流程衔接起来。
 

数据传递

事件驱动的处理过程,数据传递是非常重要的,Vert.x支持任意对象的数据格式。但使用对象时经常会遇到序列化和载入类的问题,比如在使用Java对象的时候,这种情况下使用JSON会更方便,这也是Vert.x推荐采用的方式。
 

特点

Vert.x的事件模型,有如下几个特点:
1.非阻塞处理请求,异步执行阻塞程序,保证了请求处理的高效性。
2.使用Event Bus事件总线来进行通讯,可以轻松编写出分布式、松耦合、高扩展性的程序。
3.使用Event Bus事件总线是Vert.x真正实现了多语言支持的基础,已支持Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon。
 
Vert.x发布于2011年,除了多语言支持,也已经支持了Postgres、MySQL、MongoDB、Redis等常用组件,发展迅速,生态体系日趋成熟,非常适用于最新的移动端后台、互联网、企业应用架构。
 

VertX这项技术其实有年头了。因为国内基本都是Spring生态。以至于大部分人,没有Spring Boot就不会开发了。这里不是说Spring Boot有什么问题,只是觉得不应该被Spring禁锢我们程序员得思维。
下面带大家来了解VertX。进入之前,请忘记Spring。忘记了Spring你就学会了VertX

 

Eclipse Vert.x是eclipse旗下的一个开源项目。Eclipse Vert.x是基于事件驱动和非阻塞的(基于netty之上,netty是一个天然的纯异步容器),换句话说这框架适合高并发的处理。

Vert.x非常灵活 ,无论是简单的网络实用程序,复杂的现代Web应用程序,HTTP / REST微服务,大容量事件处理还是完整的后端消息总线应用程序,Vert.x都非常适合。比如游戏后端开发、银行业务开发等等。

Vert.X 中没有MVC、IOC、AOP、ORM这些概念,而是用自己的一套解决方案处理。

概念


1、verticle是vert.x中可被部署运行的最小代码块,可以理解为一个verticle就是一个最小化的业务处理引擎。 一个应用程序可以是单个verticle或者由EventBus通信的多个verticles构成。
2、verticle被发布部署后,会调用其内部的start方法,开始业务逻辑处理,完成后会调用stop方法,对该代码块执行销毁动作。
3、Verticles在Vert.x实例中运行。 一个Vertx可以承载多个verticles,每个Vert.x实例在其私有的JVM实例运行。 一台服务器可以运行一个或多个Vert.x实例(建议运行Vertx实例的数量和CPU核数相关)。
4、一个Vert.x实例,保证其承载的verticles实例总是在同一个线程执行, 并发Vert.x 是单线程的。

 

简单来说,Vert.X是一个异步响应式框架。是基于Netty实现的。

 

官网地址:https://vertx.io/
官网中文地址:http://vertxchina.github.io/vertx-translation-chinese/

 

posted @ 2022-05-17 10:49  孔紫旭  阅读(311)  评论(0)    收藏  举报