今天,人们想要具有强大用户体验的高响应、交互式应用程序,这通常意味着处理异步性,尤其是当应用程序涉及高负载、实时数据和多用户时。
由于 Java 是一种面向对象的语言,本质上支持命令式编程风格,因此异步性是一个相当麻烦的问题,可以将代码变成完全地狱。解决异步并发症的一种可能方法是在编码级别(反应式编程)或设计和架构级别(反应式系统)引入“反应性”。
让我们浏览一下最流行的框架和工具包,以了解我们今天有哪些选项可以在 Java 中实现响应式以及它们有何不同(如果有的话)。但是,从“反应式”上下文中刷新一些基本术语开始是一个好主意。
1. 快速回顾一下“反应性”
Reactive Streams 规范于 2015 年出现,旨在为具有非阻塞背压的异步流处理提供标准,以确保反应库的互操作性。该倡议没有引入任何新东西,而是汇集了一组规则和协议,以简化和标准化跨多种工具的“反应性”。它引入了四个核心接口(Publisher、 Subscrib er、 Subscription 和 Processor)。发布者产生一系列事件并将其定向到订阅者。订阅者从发布者接收数据并产生副作用。订阅是发布者和订阅者之间的连接。处理器包括发布者和订阅者协议。
非阻塞环境意味着线程永远不会浪费等待其他操作完成。
背压是一种“重要的反馈机制”,当数据产生的速度快于接收者可以使用的速度时,它允许管理案例。它使数据生产者有可能保持正确的速度,并且不会在高负