NodeJS和线程在2015年

我想有一段时间(1)永远循环与设备[TCP]并行通信。 想法是为每个IP地址[TCP连接]启动线程并让它们永远通信。 目前我需要支持的设备数量是200多个

  1. NodeJS如何实现while(1)策略和基于事件的如何衡量超时和响应时间。

  2. NodeJS将能够处理200多个线程? 我已经在Windows应用程序之前做过这个,它正常工作我有一个服务器类的机器[16核心]

  3. build议任何最佳实践

  4. 我应该保持NodeJS处理networkingstream量,并将通信服务器[TCP和Thread]代码移动到某种导航语言中?

  1. 看看这里 – https://github.com/caolan/async#forever ,可能untildoUntilforever是你在找什么

  2. 是的,您可以使用nodejs集群来扩展16个进程(每个CPU核心一个)

  3. 使用callbacks和Caolan Async,不要写同步代码

  4. 很难的问题,可能是Go语言的轻量级线程很适合这个任务 – 另请参阅许多例程的内存消耗

如果您认为while循环是关键,那么您会严重误解Node.js事件循环模型。 这完全不相干。 已经有一个强大的事件调度系统内置,没有必要build立自己的最重要的。

Node.js可以处理线程吗? 有点。 不是真的。 如果你有需要线程的CPU密集型任务,你应该看看webworkers ,但是多进程模型是传统上由Node推动的模型。

记住:节点都是关于非阻塞asynchronous操作 ,所以线程不会帮你。 这不像Java那里你有成千上万的线程,他们正在进行阻塞调用。 您不会创build线程来处理每个连接,只需编写asynchronous代码以在同一个线程上处理它们。

您应该尝试模块化您的解决scheme。 任何沉重的东西都应该包含在可以使用像RabbitMQ这样的事件总线进行分派的任务中,以便pipe理工作stream程。