我正在寻找一种可以轻松嵌入到应用程序中的分布式计算平台。
我调查了MPI(以及它的一些实现)但是从我看到它涉及为每个任务创建一个可执行文件并使用mpirun
启动。我不排除它,我只是想将它嵌入到应用程序中,而不是作为外部可执行文件(如果可能的话)。
SO用户是否知道这样的框架(最好是开源的)?另外,为了让我明白一些使用样本会很好。
如果可能的话,我对跨平台解决方案感兴趣,因为局域网中要部署解决方案的站点是异构的。
非常感谢任何建议,特别是代码示例。
答案 0 :(得分:3)
除了MPI之外,我还想到了四个系统:AMQP,ZeroMQ,Cilk和演员。
AMQP使用消息传递在系统之间进行通信,使用中央消息代理来处理/分发消息。一些实现保证正确传递到接收器但速度较慢(类似于TCP)。一些实现是火灾和遗忘,不允许保证交付,但更快(类似于UDP)。注意AMQP是一种协议,而不是实现 - 流行的实现包括ActiveMQ和RabbitMQ。
ZeroMQ有点类似于AMQP减去中央消息代理。它基本上是Actors风格我认为,它更具编程性,允许您以端到端的方式设计您的系统。它是分散的(没有中央消息代理),基准测试似乎表明它比AMQP实现快得多。
我没有太多使用Cilk的经验,除了它是来自麻省理工学院的一个受到良好支持的项目,旨在与C / C ++一起使用。
Actors是一个抽象来帮助本地/分布式并发,由Erlang和最近的Akka项目(Scala,Java)推广。我所知道的C ++兼容版本是Theron,Actor-CPP和libcppa,但我不确定哪些支持远程演员。
答案 1 :(得分:0)
我认为Hazelcast就是那种东西;可嵌入的分布式计算。但是它在java中,而不是C.但是你可以从Java调用C语言。