小规模分布式C ++应用程序的最佳方法

时间:2009-07-27 18:34:21

标签: c++ soap distributed soa rpc

我正致力于发布一个独立的应用。应用程序的每个实例都必须能够发送和接收查询。

要求:

  1. 语言 - C ++
  2. 规模 - 小。可能一次是5个实例
  3. 平台无关
  4. 预计传输的数据量很高(最坏情况下的原始图像)
  5. 我不想使用RPC,因为它需要运行注册表服务。我认为CORBA和SOAP太过于开销。我决定使用自定义协议,但只是想听听是否有更好的。

    感谢。

6 个答案:

答案 0 :(得分:6)

Protocol Buffers听起来很合适,支持C ++,跨平台,专为高性能而设计。

答案 1 :(得分:5)

MPI是为此而制作的,当然比Corba等更容易使用。
当你发现你的小规模分布式应用程序成为一个非常大规模的分布式应用程序时它会扩展!

答案 2 :(得分:4)

为什么不使用http POST

  • 根据需要轻量级(打开套接字,发送POST字符串),或者如果你想要健壮性,可以使用http库。
  • 易于管理服务器端的权限(只需使用apache或iis)
  • 内置日志记录(在网络服务器端)
  • 没有扩展问题(网络服务器解决了这些问题)
  • 通常系统不需要http套接字的权限(xp用于原始套接字)。
  • 用于标识字段和数据的键/值对。
  • 您可以使用firefox插件测试它。
  • 如果速度是一个问题,您可以轻松设置超时并重新发送。
  • 您不必担心防火墙,因为默认情况下几乎总是允许使用http。
  • 使用端口嗅探器进行调试很简单。
  • 所有服务器端代码和大部分客户端代码都是为您编写的。

答案 3 :(得分:3)

我建议将HTTP协议与实际嵌入在您应用程序中的小型Web服务器一起使用。这很容易上手,并且有很多好的可嵌入式网络服务器 - 我个人推荐Mongoose

答案 4 :(得分:3)

我看看Spread Toolkit。它是C,但C++ bindings exist,它也很容易推出自己的。你的听起来非常像我曾经使用它的一些项目非常成功(虽然没有任何绑定)。

从项目的网站:

  

Spread是一个开源工具包,提供高性能的消息服务,可以抵御本地和广域网的故障。 Spread用作分布式应用程序的统一消息总线,并提供高度调整的应用程序级多播,组通信和点对点支持。传播服务范围从可靠的消息传递到具有交付保证的完全有序的消息。

     

Spread可用于许多分布式应用程序,这些应用程序需要高可靠性,高性能以及各成员子集之间的强大通信。该工具包旨在封装异步网络的挑战性方面,并支持构建可靠且可扩展的分布式应用程序。

     

Spread包含一个用户应用程序链接的库,一个在处理器组的每台计算机上运行的二进制守护程序,以及各种实用程序和演示程序。

     

Spread提供的一些服务和好处:

     
      
  • 可靠且可扩展的消息传递和群组通信。
  •   
  • 一个非常强大但简单的API简化了分布式体系结构的构建。
  •   
  • 易于使用,部署和维护。
  •   
  • 从一个局域网到复杂的广域网可高度扩展。
  •   
  • 支持数千个具有不同成员集的群组。
  •   
  • 在出现计算机故障,进程崩溃和恢复以及网络分区和合并时启用消息可靠性。
  •   
  • 为消息提供一系列可靠性,排序和稳定性保证。
  •   
  • 强调稳健性和高性能。
  •   
  • 完全分布式算法,没有中心故障点。
  •   

我知道基于这一切,听起来它必须是复杂的东西,并且可能对任何小项目都有点过分 - 但实际上并非如此:基本用法非常简单。当然,它很复杂,因为工具包解决的问题本来就很困难;但至少我从来没有看过那里,就像我从来没有检查TCP是如何工作的,尽管我已经广泛使用它。

(不,我不以任何方式为该项目工作。只是一个快乐的用户。)

答案 5 :(得分:1)

我建议你从deltavsoft评估RCF,它听起来很合适,因为它是为c ++应用程序量身定制的,它是免费的。

http://deltavsoft.com/w/