使用RPC (linux)在c++中开发分布式应用程序
Developing Distributed application in C++ using RPC (linux)
我正在用c++开发一个分布式应用程序,需要一个中间件。我做了一个比较,我的结论是:
- CORBA。它死了:-( )
- MQ选项。像ZeroMQ+MessagePack或ProtocolBuffers + RPC的东西。对于c++来说,还没有成熟的RPC库。
- ZeroC/冰。这是一个非常好的选择,但不是许可证问题的选择。
- Dbus。不像本地桌面那样分布式,并且在大负载时存在性能问题(正在开发的补丁内核)。
- 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/
相关文章:
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- 我正在开发服务器,ip作为参数传递不起作用
- 如何使用 GPS 和指南针开发点移动算法
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 使用AAR的虚幻安卓开发
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 开发C++/地图中的控制台角色扮演游戏
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 使用 AWS C++ 开发工具包分段上传 S3
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 与 AWS 开发工具包的链接问题
- CMake 工具链文件:嵌入式开发的适当值"CMAKE_SYSTEM_PROCESSOR"
- 错误:#include 在开发C++中嵌套得太深
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 可视化配置 VS 代码以进行 C++ 编程和开发
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- C++如何告诉开发人员在设计模板(如Java接口)时实现某事
- 在没有Xcode的macOS中开发具有依赖关系的应用程序
- 仅在标头开发中转发声明
- 使用RPC (linux)在c++中开发分布式应用程序