【问题标题】:How to control TCP_NODELAY setting for Scala remote actor?如何控制 Scala 远程演员的 TCP_NODELAY 设置?
【发布时间】:2009-10-08 20:49:33
【问题描述】:

我正在使用 Scala 的远程参与者,但往返时间(即使是微不足道的消息)是 80 毫秒,可能是由于底层套接字没有禁用 TCP/IP Nagle 算法(也称为 TCP_NODELAY),或者至少是这是对 Java RMI 有一定经验的人告诉我的。

我在客户端中为获取到远程参与者的链接所做的只是

val server=select(Node("127.0.0.1",12111),'server)

有什么方法可以获取底层套接字并在其上调用java.net.Socket.setTcpNoDelay() 吗?

【问题讨论】:

    标签: sockets scala tcp actor


    【解决方案1】:

    如果你需要在底层 Socket 上调用 setTcpNoDelay() 而不修改 Scala 源代码,有两种方法。

    1. 实现您自己的 SocketImplFactory:这个解决方案很糟糕,因为您需要实现自己的 SocketImpl,这并不简单,而且您不能仅仅包装现有的 SocketImpl,因为它不是公共 API。在这里我只能说首先要归咎于设计 SocketImplFactory 的人。

    2. 使用 AOP

    顺便说一句,我认为解决这个问题的最好方法是修改Scala远程actor代码并提交补丁。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 2012-09-02
      • 2011-02-14
      • 2011-05-17
      • 2012-09-03
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多