文档介绍:基本概念
Verticle:,它可以用JS、Ruby等多语言来编写,,一个应用可能由多个Verticle组成,他们被部署到不同的网络节点上,(event bus)上交换信息来通信。对于具体的verticle可以直接从命令行启动,但是通常会将它打包成modules。
Module:,一个模块由多个Verticle来组成,
Event Loops:即事件循环,,,。,线程最大数量为主机有效的CPU核数。
Event Loop Vertical:事件的业务处理线程,存在于Event Loop中,用于处理非阻塞短任务。
Worker Vertical : 事件的业务处理线程,用于处理长任务阻塞任务。
Event Bus:,在集群中容器之间的通信,各个Verticle之间的通讯都是经过Event Bus来实现的,后期会推出一篇专门关于这个的文章,敬请等待。
Shared Data:,用来解决各个Verticle之间的数据共享。
通常Tomcat会在100个并发长请求(这个请求要求做很多事长任务)下堵塞,而Vertx将长任务委托给另外一个线程来执行,从而不会堵塞当前线程,与NodeJS的原理非常类似,如下图:
事件循环的线程和长任务工作线程之间是通过事件总线EventBus通讯的,这个事件总线是一个JVM之中,,非阻塞IO的实现,基于Event Loop Vertical和Worker Vertical的分离,,Event Loop用于接收,并将短业务操作交由其内部的Vertical来处理,该模块是非阻塞的,这样可以保证请求的处理效率;,转移到Worker Vertical中执行,并执行结果返回给Event Loop Vertical。这一过程完成的核心是Event Bus,Event Bus中注册了所有的事件,通过事件匹配完成事件转移和结果返回,从而将整个流程衔接起来。如下图:
多层之间也可以通过EventBus通讯实现调用:
多个客户端或服务器端。,会将Worker Vertical的事件处理函数加载到Event Bus,,Event Loop首先接收到请求,并对请求做分析、包装,然后将事件交给Event Bus来处理,Event Bus为此次请求事件添加一个事件ID,然后根据注册的Worker Vertical事件寻找已经注册的监听函数,若未找到则会抛弃该事件,若找到则会对处理类进行实例化,并同时使用事件ID在Event Bus中注册一个返回结果处理事件,该事件为Event Vertical类型。下一步由Worker Vertical实例执行事件处理函数,事件处理函数中通常包含业务处理、数据库操作等。Worker Vertical实例处理结束后,将返回结果和事件信息返回给Event Bus,Event Bus找到在其中注册的Event Vertical实例,然后将返回数据交给该实例处理,Event Vertical实例进一步处理数据并将结果返回给浏览器。如下图:
-Web
-。你可以使用它构建现代的可扩展的web应用程序。,但是对于大多数的应用程序这些也就够用了。--Core为更容易的构建真正的web应用程序提供了丰富的功能。
:
路由(基于方法、路径等)、正则表达式模式匹配的路径、从路径提取参数、内容协商、请求主体处理、身体大小限制、Cookie解析和处理、多表单上传、多文件上传、子路由器支持、会话支持——本地和集群、交叉起源资源共享支持、错误页面处理程序、基本身份验证、基于重定向的身份验证、授权处理程序、JWT基于授权、用户/角色/权限授权、标识处理、服务器端呈现的模板支持(包括支持以下模板引擎的:Handlebars、Jade、MVEL、Thymeleaf)、响应时间处理程序、静态文件服务,包括缓存逻辑和目录清单。请求超时的支持、SockJS支持、事件总线桥
大多数的Ver