0

我正在编写一个分布式系统,其中每个节点通过一些 RESTful API 与本地应用程序接口,支持扩展和运行时自定义等。它有点像广域的企业服务总线,但还有很多其他事情不是与手头的问题有关。

我已经阅读了一些关于 MPI 和 Asio 的内容 - 最初我选择的是 Asio,但后来我找到了 MPI,现在我再次认为 Asio 对我来说是更好的解决方案。MPI 似乎提供了很多我不需要的东西和比我想要的更高级别的抽象——例如,我只需要点对点通信,并且控制何时以及什么数据对我来说很重要传送。(例如,我已经设计了一个理想情况下符合的数据包结构)

所以我的主要问题是:从 Asio 的较低级别开始是值得的,还是我应该尝试将 MPI 移植到我正在寻找的东西上?此外,是否有使用 MPI 或 Asio 来帮助开发的“骨架应用程序”?(实际上我是 100% 的 C++ 新手……;)或者,将它们串联使用是否有意义?

从更远的角度来看,也许值得注意的是,我已经使用Perl 对象环境在 Perl 中实现了这个项目的大部分内容,它本身只是一个带有大量网络库的异步事件系统。

此外,如果它有所作为,我理想情况下会为此使用线程。老实说,尽管我还没有使用过 Boost,正如我上面所暗示的,所以任何输入都是值得赞赏的。

4

1 回答 1

0

我应该首先说我对 Asio 一无所知,但是从对网站的 2 分钟扫描和对您的问题的描述来看,听起来虽然两者都可能对您有用,但 Asio 可能更简单。MPI 实际上不是为通用网络通信而设计的,而更多地是为运行应用程序而设计的,其中进程和应用程序集更加静态。如果需要,它提供客户端/服务器样式接口,但它不是库的主要焦点。

如果您已经设计了数据包结构,则 MPI 也更难使用。MPI 非常适合抽象出对数据包、进程位置等的担忧,但如果您已经在应用程序中考虑了所有这些,那么您已经完成了艰苦的工作。

至少还有其他关于 Asio 与 MPI 的讨论,您可以查看(对于分布式应用程序,使用哪个,ASIO 与 MPI?)以获得更多意见。

于 2013-06-27T13:27:24.580 回答