RPC、套接字和性能注意事项

RPC, sockets and performance considerations

本文关键字:性能 注意事项 套接字 RPC      更新时间:2023-10-16

我在同一子网中有两台机器。我想尽快在两台机器之间交换对象。它使用的是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。