RPC,套接字和性能考虑因素

时间:2011-05-10 18:46:22

标签: c++ ubuntu g++ debian rpc

我在同一子网中有两台机器。我想尽快在两台机器之间交换对象。它使用的是g ++,它在Debian / Ubuntu上。这些机器加载了流量和CPU。

  • 一种方法是通过套接字将对象的压缩序列化作为二进制数据包发送(使用Google协议缓冲区进行编码)。

  • CORBA似乎对此

  • 来说太过分了
  • 我阅读了一些关于ONC-RPC和Sun RPC的文章

  • Boost是否有一个高效的库?

我相信你有其他想法。您将如何保证2011年的最佳响应时间...我可以放弃一点点响应时间来获得标准解决方案。

3 个答案:

答案 0 :(得分:1)

您可以将用于序列化的Google protobuf与Boost.ASIO结合使用来处理实际的I / O.这应该在性能和实施时间之间提供良好的平衡。

答案 1 :(得分:1)

Zeromq人已经尝试使用Linux实时内核来保证低延迟。如您所见,为此保证必须牺牲大量的平均延迟。根据应用程序,它可能是必要的权衡。

http://www.zeromq.org/results:rt-tests-v031

答案 2 :(得分:1)

当你说你想“尽快在两台机器之间交换对象”时,听起来你感兴趣的是尽可能地限制网络带宽。如果是这种情况,您可以考虑使用FAST protocol

首字母缩略词FAST正式意味着“FIX适合流媒体”,这意味着它最适合FIX协议,但事实并非如此。 FAST可以与任何协议一起使用。

FAST编码的数据包可能非常小,一个好的实现将在编码和解码中使用有限的CPU资源。权衡是FAST协议并不是世界上人类最容易理解的东西,并且代码可能非常棘手。有可用的开源产品实现,可能适合您的需求,也可能不适合您。 C ++的一个这样的实现是QuickFAST