预取在项目反应堆中是什么意思? [英] What does prefetch mean in Project Reactor?

查看:0
本文介绍了预取在项目反应堆中是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Project Reader,并且正在使用Flux.flatMapIterable。(我基本上有一个对象A流;对于每个对象A,我将其平面化映射为对象B流,并从中生成一个新的通量。)

我正在尝试了解prefetch设置的作用。在我的例子中,每个对象A都可能被转换为任意数量的对象B(介于0到N之间;N很大)。

我只想了解:

  • 什么是预回迁?它只适用于最初的请求吗?(即,如果我将其设置为1,则Project Reader是否足够智能,以便在发现1太小时增加请求大小?)

  • 它与我在这里的情况相关吗?为了保守起见,我正在考虑将预取设置为1,因为单个A对象有可能被平面映射为大量的B对象。

推荐答案

预回迁将影响发布者在其第一个请求中请求的项目数。这是一个影响后续请求的上限,当已发出75%的预热金额时会触发后续请求,因此不会自动增加。

通常用于以下情况:使用者请求大量数据,但数据源表现更好或可以使用较小的请求进行优化(例如,数据库分页等)。

它是否与您的使用案例相关取决于您的出版商的特征。

来自配置背压的[文档]1

您可能还注意到,某些运算符具有 接受一个名为prefetch的int输入参数。这是另一个类别 修改下游请求的操作员。这些通常是 处理内部序列的运算符,从 每个传入元素(如Flat Map)。

预回迁是一种调优在这些内部 序列。如果未指定,则这些运算符中的大多数都以请求开头 共32个。

这些运算符通常还会实施补充优化: 一旦操作员看到25%的预取请求完成后,它 从上游重新请求25%。这是一个启发式的优化 以便这些运营商主动预测即将到来的请求。

这篇关于预取在项目反应堆中是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆