2015年NodeJS和主题

时间:2015-06-23 16:25:00

标签: node.js

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

  1. NodeJS如何实现while(1)策略以及如何根据事件来判断超时和响应时间。

  2. NodeJS能够处理200多个线程吗?我以前在Windows应用程序中完成了这项工作并且它正常工作我有一台服务器级机器[16核心]

  3. 建议的任何最佳做法

  4. 我是否应该让NodeJS处理网络流量并将通信服务器[TCP和Thread]代码移到某种导航语言中?

2 个答案:

答案 0 :(得分:2)

如果您认为TuyenTk.cer循环是关键,那么您认真误解了Node.js事件循环模型。这完全无关紧要。已经内置了强大的事件调度系统,没有必要在此基础上建立自己的事件调度系统。

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

请记住:Node完全是关于非阻塞异步操作,所以线程不会帮助你。这不像Java那样,你有成千上万的线程在他们进行阻塞调用。您不创建处理每个连接的线程,只需编写异步代码即可在同一个线程上处理它们。

您应该尝试模块化您的解决方案。任何繁重的事情都应该包含在可以使用RabbitMQ之类的事件总线调度的任务中,以便您可以管理工作流程。

答案 1 :(得分:1)

  1. 看看这里 - https://github.com/caolan/async#forever,可能untildoUntilforever正在寻找

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

  3. 使用回调和Caolan Async,不要编写同步代码

  4. 很难提问,Go语言light weight threads可能适用于此任务 - 另见Go memory consumption with many goroutines