响应式流是什么?
响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者,而不需要发布者阻塞,或订阅者有无限制的缓冲区或丢弃。
响应式流模型存在两种基本的实现机制。一种就是传统开发模式下的“拉”模式,即消费者主动从生产者拉取元素;而另一种就是“推”模式,在这种模式下,生产者将元素推送给消费者。相较于“拉”模式,“推”模式下的数据处理的资源利用率更好,下图所示的就是一种典型的推模式处理流程。

数据流的生产者会持续地生成数据并推送给消费者。这里就引出了流量控制问题,即如果数据的生产者和消费者处理数据的速度是不一致的,我们应该如何确保系统的稳定性呢?
流量控制
生产者生产数据的速率小于消费者的场景
这种场景对于消费者来说没啥压力,正常消费就好了,这里也就不需要所谓的流量控制了。
生产者生产数据的速率大于消费者的场景
生产者生产数据的速率大于消费者的场景,应该是我们业务中经常遇到的场景了,这种场景由于消费者处理不过来导致崩溃,业界通常的做法是在生产者与消费者之间加一个队列做缓冲。我们知道队列具有存储与转发的功能,所以可以用它来进行一定的流量控制。

响应式流是一种无阻塞异步处理标准,旨在解决元素流从发布者到订阅者的传递问题。背压机制是关键,允许下游向上游反馈流量请求,以保持生产和消费的动态平衡。文章讨论了无界队列、有界丢弃队列和有界阻塞队列的优缺点,并介绍了Java中的响应式流规范,包括Publisher、Subscriber和Subscription接口。
最低0.47元/天 解锁文章
4588

被折叠的 条评论
为什么被折叠?



