使用RPC (linux)在c++中开发分布式应用程序

Developing Distributed application in C++ using RPC (linux)

本文关键字:开发 分布式 应用程序 c++ RPC linux 使用      更新时间:2023-10-16

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

  1. CORBA。它死了:-(
  2. )
  3. MQ选项。像ZeroMQ+MessagePack或ProtocolBuffers + RPC的东西。对于c++来说,还没有成熟的RPC库。
  4. ZeroC/冰。这是一个非常好的选择,但不是许可证问题的选择。
  5. Dbus。不像本地桌面那样分布式,并且在大负载时存在性能问题(正在开发的补丁内核)。
  6. RPC。旧的,但现在这是我最好的选择。

那么,你对21世纪(2014年)的c++分布式应用有什么看法?

Apache Thrift呢??有c++和Apache盗贼RPC的经验吗?

谢谢。

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

这实际上取决于应用程序、节点之间的预期带宽和所需的可伸缩性(目标是在数十万台主机上拥有数百万个内核的数据中心超级计算机,与目标是在千兆字节以太网上的几个台式机完全不同)。

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

Internet Communications Engine (Ice)是一种支持多种语言的现代且最新的RPC机制。你可以在这里下载。Ice的许多api都是用Slice定义的,Slice是Ice的规范语言。

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

切片定义由编译器为特定的实现语言(例如c++)编译。

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