我正在研究大数据解决方案。通常我从一大块大数据开始,处理它,将结果发送到下一个工具以进行更多处理,依此类推。以下是这样一个工具链的样子的一个小例子。大多数情况下它不是很深(2或3级),根部的扇出通常也小于3.但叶子中的扇出可以很容易100。
这些工具来自各种来源,可以是封闭源。所以我无法将所有工具的输入和输出变为通用格式。此外,这些工具将以不同的语言编写。 C,Java,Python,Bash,......
最终产品将在具有大量RAM的服务器上运行。所以我想转到内存中的共享内存解决方案。
根工具是一个中介(注意:这将是我解决我的问题的想法,当然我可能是错的,并且会有更好的方法)。中介器将工具链作为输入(用户将选择子过程的选择和顺序),调用不同的子过程,分配数据,在子过程完成时接收来自子过程的信号,并且可以运行下一个过程。同一级别的子流程应该并行运行。
现在问我的问题:首先 - 这是一个好的设计吗?第二:哪种API /函数/编程技术最适合调用所有这些进程,以便共享RAM? (所以也许并不总是可以共享RAM。这不是那么重要。)
mediator
|-- toolA
| |-- toolA1
| | |-- toolA11
| | +-- toolA12
| +-- toolA2
| +-- toolA21
+-- toolB
|-- toolB1
|-- toolB2
+-- toolB3
答案 0 :(得分:0)
我不太清楚我理解您的所有问题/解释,但是如果您想避免使用文件系统来编写中间文件(来自一个工具的输出文件是下一个工具的输入文件),如果如果您的服务器上有足够的可用内存来存储这些文件,那么您可以考虑使用内存中的文件系统。
如果你在Linux上运行,你可以使用/dev/shm
作为工作的基本目录,或者安装一个更方便的目录tmpfs
......