【问题标题】:Developing Distributed application in C++ using RPC (linux)使用 RPC (linux) 在 C++ 中开发分布式应用程序
【发布时间】:2014-05-02 23:56:20
【问题描述】:

我正在用 C++ 开发一个分布式应用程序,并且需要一个中间件。我做了一个比较,我的结论是:

  1. 科尔巴。它已经死了:-(
  2. MQ 选项。像 ZeroMQ+MessagePack 或 ProtocolBuffers + RPC 的东西。太新了,以至于没有适用于 C++ 的 RPC 成熟库。
  3. 零C/ICE。一个非常好的,但不是许可证问题的选择。
  4. D 总线。不像本地桌面那样分布,并且对于大负载(开发中的补丁内核)存在性能问题。
  5. RPC。旧的,但现在这是我最好的选择。

那么,您如何看待二十一世纪(2014 年)的 C++ 分布式应用程序。

Apache Thrift 怎么样?有 C++ 和 Apache Thift RPC 的经验吗?

谢谢。

【问题讨论】:

  • 作为一个快速评论尝试查看数据分发服务,是一个开放的标准中间件:portals.omg.org/dds(虽然从未使用过)

标签: c++ linux rpc middleware


【解决方案1】:

为什么不试试 Storm,它是分布式 RPC:http://storm.incubator.apache.org/

【讨论】:

    【解决方案2】:

    您可以查看CppRemote 库。它易于使用且面向对象。您使用 c++ 宏编写 IDL,无需外部编译器。免责声明:我是这个库的作者。

    【讨论】:

    • 它让我想起了 ZeroMQ+MessagePack+MessagePack-RPC 的工作方式,但更好(恭喜),要做一些测试。
    【解决方案3】:

    互联网通信引擎 (Ice) 是一种支持多种语言的现代和最新的 RPC 机制。你可以下载它here。许多 Ice API 是在 Ice 的规范语言 Slice 中定义的。

    Slice(Ice 规范语言)是将对象接口与其实现分离的基本抽象机制。 Slice 在客户端和服务器之间建立契约,描述应用程序使用的类型和对象接口。该描述与实现语言无关,因此客户端是否使用与服务器相同的语言编写无关紧要。

    切片定义由编译器为特定的实现语言编译,例如 C++。

    【讨论】:

    • 正如我所说,即使 ZeroC/Ice 可能是最好的选择,但它对我来说不是一个选择。
    【解决方案4】:

    这实际上取决于应用程序、节点之间的预期带宽以及所需的可扩展性(针对具有数十万台主机中的数百万核的数据中心超级计算机与针对千兆以太网上的几台台式机完全不同)。

    也可以考虑MPI;如果您不需要大量带宽,请考虑使用更简单的文本协议,例如 json-rpc

    【讨论】:

    • 它不会那么大,我不喜欢消息系统,而是 RPC 解决方案。
    • JSON RPC 是一种 RPC 解决方案。
    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2016-10-14
    相关资源
    最近更新 更多