假设我有一组计算,想要使用core.async异步运行。然而,其中几个函数依赖于其它函数的输出结果。在保证代码清晰的同时也要获得最佳性能,应该如何构建它?
我找到了几个可能的解决方案。
我找到了几个可能的解决方案。
- 棱形图 - 看起来很合理,但我没有使用core.async通道进行测试;它需要使用
fnk
,这对我来说有点让人望而却步,因为它需要购买他们的函数定义DSL,但如果这是最好的解决方案,我不介意。 - Javelin单元 - 仅适用于ClojureScript(目前),并使用FRP而不是CSP作为实现,但它通过公式单元格非常好地建模计算之间的依赖关系。
- Onyx - 专为分布式计算制作(作为Apache Storm等的竞争对手),但具有处理计算之间依赖关系的“工作流”抽象,并与core.async一起使用。这似乎是最符合我的问题域的解决方案,但我不确定是否需要所有集群管理功能的开销。
这个问题的规范解决方案是什么?
编辑:添加了Onyx