我正在分发一个独立的应用程序。应用程序的每个实例都必须能够发送和接收查询。
要求:
- 语言 - C++
- 规模 - 小。一次可能是 5 个实例
- 平台无关
- 传输的数据量预计会很高(最坏情况下的原始图像)
我不想使用 RPC,因为它需要运行注册表服务。我认为 CORBA 和 SOAP 的开销太大了。我有点决定使用自定义协议,但只是想听听是否有更好的方法。
谢谢。
我正在分发一个独立的应用程序。应用程序的每个实例都必须能够发送和接收查询。
要求:
我不想使用 RPC,因为它需要运行注册表服务。我认为 CORBA 和 SOAP 的开销太大了。我有点决定使用自定义协议,但只是想听听是否有更好的方法。
谢谢。
Protocol Buffers听起来很合适,受 C++ 支持,跨平台,专为高性能而设计。
MPI就是为此而设计的,它肯定比 Corba 等更容易使用。
当你发现你的小规模分布式应用程序变成了一个非常大规模的分布式应用程序时,它就会扩展!
为什么不使用http POST?
我建议将 HTTP 协议与实际嵌入在您的应用程序中的小型网络服务器一起使用。这很容易上手,并且有很多优秀的可嵌入网络服务器——我个人推荐Mongoose。
我会看看传播工具包。嗯,它是 C,但存在 C++ 绑定,而且你自己也很容易推出。你的听起来很像一些我已经成功使用它的项目(尽管没有任何绑定)。
从项目的网站:
Spread 是一个开源工具包,它提供了一种高性能的消息传递服务,该服务对跨局域网和广域网的故障具有弹性。Spread 用作分布式应用程序的统一消息总线,并提供高度调整的应用程序级多播、组通信和点对点支持。传播服务的范围从可靠的消息传递到具有传递保证的完全有序的消息。
Spread 可用于许多分布式应用程序,这些应用程序需要在各种成员子集之间进行高可靠性、高性能和鲁棒的通信。该工具包旨在封装异步网络的挑战性方面,并支持构建可靠且可扩展的分布式应用程序。
Spread 由与用户应用程序链接的库、在作为处理器组的一部分的每台计算机上运行的二进制守护程序以及各种实用程序和演示程序组成。
Spread提供的一些服务和好处:
- 可靠且可扩展的消息传递和群组通信。
- 一个非常强大但简单的 API 简化了分布式架构的构建。
- 易于使用、部署和维护。
- 从一个局域网到复杂的广域网的高度可扩展性。
- 支持具有不同成员集的数千个组。
- 在出现机器故障、进程崩溃和恢复以及网络分区和合并的情况下启用消息可靠性。
- 为消息提供一系列可靠性、排序和稳定性保证。
- 强调稳健性和高性能。
- 完全分布式算法,没有中心故障点。
我知道,基于这一切,听起来它一定是复杂的东西,可能对任何小项目来说都是多余的——但实际上并非如此:基本用法非常简单。当然,它在底层很复杂,因为该工具包解决的问题本质上是相当困难的;但至少我从来不用看那里,就像我从来没有检查过 TCP 是如何工作的一样,即使我一直在广泛使用它。
(不,我不以任何方式为该项目工作。只是一个快乐的用户。)
I would suggest you to evaluate RCF from deltavsoft, it sounds like a good fit as it is tailored for c++ application and it's free.