MPI或Asio,用于基于广域插件的消息传递
MPI or Asio for wide-area plugin-based message passing
我正在编写一个分布式系统,其中每个节点通过一些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?)以获得更多意见。
- 从C++本机插件更新Vector3数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 使用CMake创建QML插件
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 等<thing>效于char32_t
- 类似于strcat()的函数出现问题
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 算术运算的结果类似于:C浮点变量中的1/3
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- clang 插件:在编译过程中修改 AST
- 实现动态插件管理器
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- Agora.io 虚幻引擎插件构建错误
- MPI或Asio,用于基于广域插件的消息传递
- 我如何使Stata插件不依赖于变量的顺序