如何处理来自tcp socket的大量数据回调?

时间:2016-09-03 10:58:55

标签: node.js sockets tcp

现在我有一个基于node.js的应用程序(A),它连接到另一个带有tcp套接字的应用程序(B)以便接收数据。

node.js应用程序还有一些验证和处理逻辑,它们在从套接字接收数据后立即执行。最后,它将结果写入数据库(异步)。 到目前为止一切都很好,性能也很好。应用程序B每秒最多发送20条消息。但是,由于应用程序B现在具有新功能,因此每秒最多可能有2000条消息。一旦应用程序B发送大量消息,应用程序A几乎冻结(内存也从30MByte上升到100Mbyte)。 在分析日志文件之后,很可能由于消息量和对套接字数据回调的调用量而导致这种情况。我每隔20ms只需要一个应用程序B的消息,但是在收到消息后立即过滤消息也不起作用。我做了一些性能测量:

  • 处理传入的消息需要大约12ms,也许我可以稍微优化这个部分
  • 从上面过滤仅需约30微秒

现在我正在考虑这样的场景:

B - > A(插座部分,一个处理) - > C(过滤和缓冲消息,一个过程)< - A(处理部分,一个过程)

我读过关于redis pub / sub的内容,但我真的不知道它是否符合我的要求。消息的顺序至关重要。 你会如何解决这个问题?可能有一点我不知道了吗?

0 个答案:

没有答案