使用消息传递的分布式C ++应用程序

时间:2014-12-16 09:10:07

标签: c++ distributed-computing

我正在研究DMTCP(http://dmtcp.sourceforge.net/),我正在研究开发一个跨多个远程计算机工作的应用程序,并通过消息计算结果。例如,计算3台机器A,B,C

的Fibonacci序列
  1. A计算起始编号并将结果发送给B

  2. B获取A的结果并使用它来计算下一个数字并将其发送给C.

  3. C然后计算下一个数字并发送给A,依此类推。
  4. 我正在尝试构建这样一个应用程序,以便我可以检查它从故障重启。但是,我无法想象这样的应用程序的代码。这是我第一次使用任何分布式应用程序。

    任何帮助都将受到高度赞赏:)

    谢谢:)

    更新:正如所建议的,我的机器不是一个集群,但我有多台机器,它们各自的操作系统通过LAN相互连接。我的主要目标是在多台机器上运行我的程序实例,以便它们可以如上所示进行通信。

    我希望这会解决一些问题。

2 个答案:

答案 0 :(得分:0)

你可以使用很多选项,我目前正在开发一个ZeroMq的项目,它可以很好地完成工作,任何other message queue software也是如此。你也可以尝试一些网格框架(想到IceGrid),但这很可能是一种过度杀伤。

对于ZeroMQ,请参阅推/拉+可能的路由器......优点是“ØMQ系统可以在没有专用消息代理的情况下运行”。缺点是你必须提出数据的序列化/反序列化(ØMQ不提供一个,这并不坏)。

另一种选择是google的Protocol Buffers。在这里,您将集成客户端/服务器和序列化/反序列化,但您必须学习新的元语言来定义消息。它们非常灵活 - 版本化,向后兼容性......它有点沉重。

答案 1 :(得分:0)

如果您的计算机是群集,则应使用MPI(消息传递接口)。它提供了丰富的通信原语,是高性能计算中的并行化主力。