预取在项目反应堆中是什么意思?堆中、反应、项目

由网友(殊)分享简介:我正在使用Project Reader,并且正在使用Flux.flatMapIterable。(我基本上有一个对象A流;对于每个对象A,我将其平面化映射为对象B流,并从中生成一个新的通量。)我正在尝试了解prefetch设置的作用。在我的例子中,每个对象A都可能被转换为任意数量的对象B(介于0到N之间;N很大)。我只想...

我正在使用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%。这是一个启发式的优化 以便这些运营商主动预测即将到来的请求。

阅读全文

相关推荐

最新文章