天天看点

Eclipse Vert.x Java Reactive响应式/反应式编程工具

作者:Java4Park

我们先翻译(搬运)官网的内容

Eclipse Vert.x Java Reactive响应式/反应式编程工具

Eclipse Vert.x 是一个用于在 JVM 上构建的反应式应用程序的工具包。反应式应用程序既可以随着工作负载的增长而扩展,又可以在出现故障时恢复弹性。反应式应用程序具有响应性,因为它通过有效利用系统资源并保护自身免受错误影响来控制延迟。

Vert.x 由大型响应式模块生态系统提供支持,其中包含编写现代服务时所需的一切:全面的 Web 堆栈、响应式数据库驱动程序、消息传递、事件流、集群、指标、分布式跟踪等。

Vert.x 是一个工具包,而不是一个带有黑魔法的框架:你写的实际上就是你要执行的,就这么简单。

那么,是什么让 Vert.x 成为编写下一个云原生或十二因素应用程序的绝佳选择?

十二因素

一、代码库

二、依赖关系

三、配置

四、后勤服务

五、构建、发布、运行

六、进程(将应用程序作为一个或多个无状态进程执行)

七、端口绑定

八、并发

九、一次性使用

十、开发/生产对等

十一、日志(将日志视为事件流)

十二、管理流程(作为流程运行管理/管理任务)

来自:https://12factor.net/

一开始,有线程......

并发的经典方法是使用线程。多个线程可以存在于单个进程中,执行并发工作,并共享相同的内存空间。

Eclipse Vert.x Java Reactive响应式/反应式编程工具

大多数应用程序和服务开发框架都基于多线程。从表面上看,每个连接有 1 个线程的模型令人放心,因为开发人员可以依赖传统的命令式代码。

这很好,特别是如果你忘记了那些在多线程和内存访问中可能犯的愚蠢错误……

多线程“简单”但有局限性

当工作负载超过中等工作负载时会发生什么情况? (参见 C10k 问题)

答案很简单:你开始让你的操作系统内核受到影响,因为处理中的请求有太多的上下文切换工作。

Eclipse Vert.x Java Reactive响应式/反应式编程工具

你的一些线程会因为等待 I/O 操作完成而被阻塞,一些线程准备好处理 I/O 结果,还有一些线程正在执行 CPU 密集型任务。

现代内核有非常好的调度器,但你不能指望它们处理 50000 个线程会像处理 5000 个线程那样容易。另外,线程并不便宜:创建一个线程需要几毫秒,而一个新线程大约需要1MB 内存。

异步编程:可伸缩性和资源效率

使用异步 I/O时,可以用更少的线程处理更多的并发连接。我们不会在发生 I/O 操作时阻塞线程,而是继续执行另一个准备好进行的任务,并在准备就绪后恢复初始任务。

Vert.x 使用事件循环多路复用并发工作负载。

Eclipse Vert.x Java Reactive响应式/反应式编程工具

在事件循环上运行的代码不应执行阻塞 I/O 或冗长的处理。但是,如果您有这样的代码,请不要担心:Vert.x 具有工作线程和 API,可以在事件循环中处理事件。

为您的问题域选择最好的异步编程模型

我们知道异步编程需要更多的努力。在 Vert.x 的核心,我们支持回调和promises/futures ,后者是用于链接异步操作的简单而优雅的模型。

使用RxJava可以进行高级反应式编程,如果您更喜欢更接近传统命令式编程的东西,那么我们很乐意为您提供一流的Kotlin。

Eclipse Vert.x Java Reactive响应式/反应式编程工具

Vert.x 支持许多异步编程模型:选择最适合的模型解决您的每个问题!

不要让失败破坏响应能力

失败总是在发生。数据库会宕机,网络会宕机,或者您依赖的某些服务会变得无响应。

Eclipse Vert.x Java Reactive响应式/反应式编程工具

Vert.x 提供了控制延迟的工具,包括一个简单高效的断路器。

丰富的生态系统

Eclipse Vert.x 堆栈包含用于构建现代端到端反应式服务的模块。从高效的反应式数据库客户端到事件流、消息传递和 Web 堆栈,Eclipse Vert.x 项目涵盖了:

Eclipse Vert.x Java Reactive响应式/反应式编程工具

不能找到你想要的?

  • Reactiverse 是一个围绕反应生态系统的更大社区,您可以在其中找到更多客户端和模块。
  • Vert.x Awesome存储库提供了指向来自更大的开源社区的更多有趣项目的链接!

如果对您有帮助,请关注一下这个二流程序员的公众号搜索-> 高级面试工程师,谢谢!

继续阅读