RPC、套接字和性能注意事项
RPC, sockets and performance considerations
我在同一子网中有两台机器。我想尽快在两台机器之间交换对象。它使用的是g++,并且在Debian/Ubuntu上。计算机在流量和 CPU 中加载。
-
一种方法是通过套接字将对象的压缩序列化作为二进制数据包发送(使用 Google 协议缓冲区进行编码 ex)。
-
CORBA 似乎对此矫枉过正
-
我读了一些关于ONC-RPC和Sun RPC的文章
。 Boost有高效的库吗?
我相信你还有其他想法。您将如何保证2011年的最佳响应时间...我可以放弃一点点响应时间以获得标准解决方案。
您可以将用于序列化的Google protobuf与Boost.ASIO结合使用来处理实际的I/O。 这应该在性能和实施时间之间提供良好的平衡。
Zeromq人已经尝试使用Linux实时内核来保证低延迟。如您所见,必须为此保证牺牲大量平均延迟。根据应用的不同,这可能是必要的权衡。
http://www.zeromq.org/results:rt-tests-v031
当您说要"尽快在两台机器之间交换对象"时,听起来您感兴趣的是尽可能限制网络带宽。 如果是这种情况,您可以考虑使用 FAST 协议。
首字母缩略词FAST正式表示"FIX适应流媒体",这意味着它最适合FIX协议,但这实际上不是真的。 FAST可以与任何协议一起使用。
FAST 编码的数据包可能非常小,良好的实现将在编码和解码中使用有限数量的 CPU 资源。 权衡是FAST协议并不是世界上最容易被人类摸索的东西,而且代码可能非常棘手。 有一些开源产品实现可能适合也可能不适合您的需求。 C++的一个这样的实现是QuickFAST。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 为大型项目编写固件时应注意的注意事项
- 结合整数和浮点数:性能注意事项
- "protected versus private"注意事项
- 将两个C++类封装到一个具有性能注意事项的高级类中
- 在字符串中搜索 UTF-8 码位时的任何注意事项
- 在C++COM(ATL)中添加新接口时需要注意哪些事项
- 构建 R 包:检查包时"Found 'rand', possibly from 'rand' (C)"注意事项
- 设计注意事项-C++服务器开发
- 多线程的内存注意事项
- 使用 std::vector<boost::shared_ptr<Base_Class>> 或 boost::p tr_vector 的性能注意事项是什么<Base>
- 在std::容器中选择存储值还是存储指针时的注意事项
- 像调用普通方法一样调用构造函数和析构函数的注意事项和风险
- 关于类型移动语义的注意事项
- 日志框架注意事项
- 基准测试注意事项和确定性数据收集
- QML/D文本编辑器和基本注意事项
- RPC、套接字和性能注意事项