我有一个问题,我有分配数据进入系统,因为它被存储在磁盘上,然后通过管道进行转换。
管道中的每个步骤都可能受 CPU 限制,但我的整体问题是内存,这意味着我必须对我的处理量设置一个限制。
在尝试使用 BoundedChannels 进行初始实现后,很容易看到内存消耗迅速增长,超出了可用的范围(我的开发机器分配了更多内存,所以这里没问题,但它会崩溃)......
总体概念是:
Multiple Producers -> BoundedChannel -> Multiple Transform Consumers -> BoundedChannel ... etc..
问题是,如果通道例如允许 100.000 个元素,当第一个被填充时,一切正常,但显然整个管道的限制随着我们执行步骤而增加,3 步骤限制突然变为 100.000 * 3...
办公室。我们可以说限制是 33.000,这在整个管道中总共约为 100.000,但是我希望允许平衡所有通道的限制,这样如果我们添加更多步骤或调整,我们就不必调整它这取决于它最密集的地方......
我不太清楚是否允许这种管道的数据流框架?
(对不起,这很抽象,另一种可能是我必须从下往上设计)