Vert.x学习笔记-什么是Vert.x

Vert.x介绍

用官网的一句话来总结:Vert.x是用于在JVM上构建响应式应用程序的工具包,项目初期的目标是成为“JVM版的Node.js”,但是后续的发展逐渐偏离了初期的目标,变成了一个给JVM提供量身定制的异步编程基础框架的工具包。

Vert.x的本质
重点是处理异步事件,这些事件主要来自非阻塞IO,处理事件的线程模型是事件循环

Vert.x是一个工具包,而不是一个框架,Vert.x没有给应用程序预定义一个基础,因此可将Vert.x作为一个库自由的用在更大的框架里面。Vert.x应用程序可以被看作是一系列模块的组合,这些模块刚好提供了你所需的东西,不需要的就不要去依赖

Vert.x的核心项目Vertx-Core提供了用于异步编程、非阻塞IO的流传输的API,还提供了针对网络协议的(如TCP、UDP、DNS、HTTP)的便捷的支持

一组由社区支持的异步功能模块是Vert.x技术栈的一部分,例如Vertx-web、Vertx-redis等,基于这些功能模块,可以构建各种各样的应用程序

Vert.x支持了大多数流行的JVM语言,例如JavaScript、Ruby、Kotlin、Scala、Groovy等,开发人员可以在同一个Vert.x应用程序中混合使用不同的编程语言,只要它们是Vert.x支持的。

回调是Vert.x用来将异步事件通知给程序代码并将其传递给某些处理程序的主要手段,如果将回调和Lambda表达式结合起来使用,则可用相对简洁的方式来定义事件处理程序

同类型工具介绍

Node.js

事件驱动的运行时环境、用于编写异步的JavaScript应用程序。基于Google Chrome 的V8 JavaScript引擎。主要区别有Vert.x默认运行多个事件循环,同时Vert.x运行的JVM具有更加优秀的JIT编译器和垃圾收集器。同时Vert.x也支持JavaScript。

Akka

Actor模型的忠实实现,Akka也运行在JVM上面,主要提供的是Scala API。

Spring框架中的Webflux

基于Reactor模式来进行实现

Quarkus

开发Java应用程序的新框架,有它开发的应用程序尤其适合在K8s等容器环境中运行

Netty

为JVM提供了非阻塞的IO API,在原始的NIO API的基础上提供了一层抽象,并且修复了一些特定平台的错误,Netty也提供了自己的线程模型:主从Reactor多线程

Python和Ruby

提供了非阻塞的IO库,也可以用他们来构建响应式系统

Go、Rust、Swift

本地编程语言,具备构建高度可拓展的应用程序的能力,也可以用于创建响应式应用程序

总结

  • 异步编程可以让我们再单个线程上复用多个网络连接
  • 相比于阻塞式IO,即便是简单的协议和同样的功能代码,非阻塞的IO实现也更加复杂
  • 事件循环和Actor模式简化了异步事件的处理
  • 响应式系统既具备伸缩性、有具备回弹性,即使负载很高,系统的响应延迟也可以保持一致
  • Vert.x是用于在JVM上编写异步和响应式应用程序的一种高效的工具包

Actor模式是一种并发模型,它通过消息传递进行合作。在Actor模型中,Actor是计算实体,能够回应接收到的消息,创建更多的Actor,发送更多的消息,并决定如何回应下一个接收到的消息。由于没有对消息的时序做规定,Actor模式是一种异步模型。同时,Actor之间不共享状态,如果想获取其他Actor的状态,只能通过消息请求的方式。

你可能感兴趣的:(vert.x,vertx,Reactor模式,异步编程)