MPI或Asio,用于基于广域插件的消息传递

MPI or Asio for wide-area plugin-based message passing

本文关键字:于广域 插件 消息传递 用于 Asio MPI      更新时间:2023-10-16

我正在编写一个分布式系统,其中每个节点通过一些RESTful API与本地应用程序接口,支持扩展和运行时定制等。这有点像一个跨广域的企业服务总线,但还有很多其他与当前问题无关的内容。

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

因此,我的主要问题是:从Asio的低级别开始是值得的,还是我应该尝试将MPI移植到我想要的东西上?此外,是否有使用MPI或Asio的"骨架应用程序"可以帮助开发?(事实上,我对C++是100%的新手。)或者,同时使用它们有意义吗?

为了获得更多的视角,也许值得注意的是,我已经使用Perl对象环境在Perl中实现了这个项目的大部分,它本身只是一个具有大量网络库的异步事件系统。

此外,如果它有区别的话,我最好使用线程来实现这一点。老实说,尽管我还没有使用Boost,正如我在上面暗示的那样,所以任何输入都是值得赞赏的。

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

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

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