预取在项目反应堆中是什么意思? [英] What does prefetch mean in Project Reactor?
本文介绍了预取在项目反应堆中是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用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屋!
查看全文