Apache Ignite map-reduce 解方程的方法

Apache Ignite map-reduce way of solving equations

我有一个可以用树描述的方程式。所以叶子是父顶点作为数学运算符的值,当计算完成时,另一个值出现在父顶点的位置并且它变成具有父顶点的叶子(作为数学运算符)。这棵树是不平衡的,深度可能不均匀,这取决于你追求的是哪个分支。

我需要知道的是如何使用 Apache ignite(我选择它是因为它的事件传播机制适合我的需要)以便通过发送不同深度的所有叶子(连同它们的父顶点)来并行化以此类推,直到计算出方程。

我是否为此使用了错误的技术?

这个问题不适合 map-reduce 技术吗?

最好的技术是什么,它还内置了事件传播技术?

我只差 1 点悬赏...

编辑:增加赏金。本质上,我的要求是在分布式计算解决方案中计算可变子问题,而不是类似的映射减少问题。存在任何解决方案吗?任何想法表示赞赏。

使用 Ignite 是可能的。您需要实现 ComputeTaskAdaptermap()reduce() 方法。第一种方法将您的任务映射到节点,第二种方法收集计算结果。参考 example.

之后,如果之前的 reduce 返回了结果集合,您可以 运行 再次执行它。

要减少传输的数据量,您可以使用缓存,并在其中存储中间数据。如果您将任务映射到具有所需数据的节点,则所有条目都将在本地可用于该任务,并且不需要从远程节点查询它们。要以这种方式映射任务,您可以使用

ClusterNode dataNode = ignite.affinity("cacheName").mapKeyToNode("key");

这里dataNode是这个key的主节点,如果task会在上面启动,整个entry会在本地可用。