最近我从mongo-cursor可读的rx.js一直有背压问题。任务基本上是:
对输入流执行各种异步转换,例如
2.1查询另一个DB B(Mongo,无论如何)以获取项目(或一批项目)的附加数据,然后对其执行(可能是异步)操作
2.2查询项目(或一批项目)的另一个数据库B(Mongo,无论如何),然后使用该附加数据执行过滤
虽然我确实有解决所有问题的方法,但我正在处理来自第一个Mongo-DB的背压,因为2.或2.1 / 2.2可能非常耗费时间,但初始查询更多性能(a.k.a consumers are slow, producers are fast
)
目前,我唯一的解决方案是将1.限制到合理的数量以降低初始吞吐量,但这显然会导致整个转型链的吞吐量降低(生产者的等待时间很长,直到整个链完成工作)
我如何实现一个总是很忙但却没有背压的转型链呢?
我在这里想要根据消费者当前(或预计)的性能动态降低生产者的速度(例如转换所需的时间),但这对我来说似乎不太直观。