用于服务器到服务器通信的Node.js

我想知道node.js是否适合服务器端的应用程序,但实际上并不是与浏览器通信,或者浏览器通信只是整个应用程序的一部分,而不是用于pipe理。

这个想法很简单:

  1. 服务器通过包含来自其他服务器的用户数据的短消息接收大量的UDP通信。

  2. 对于每个消息应用程序执行数据库查找,并过滤掉不在白名单上的userid的消息。

  3. 过滤的消息被处理,导致另一个数据库更新,或将数据发送到另一个服务器。

是这样的情况下,学习node.js的一个很好的场景,或者也许没有比如Java EE的好处?

免责声明:我在为node.js做贡献的公司工作,并提倡使用它,所以我的意见可能会有所偏差。

正如其他人在评论中提到的,node.js应该很适合你的情况。 它实际上是人们使用node.js最常见的场景之一 – 从(可能是多个)源获取数据,执行less量的CPU-light处理并发回响应或存储结果。 除非消息过滤非常昂贵,否则node.js实现可能会胜过J2EE版本。

原因是Node.js针对服务器花费大部分时间等待的解决scheme进行了大量优化。 等待客户端连接,等待数据库响应,等待光盘读/写,等待客户端读取响应等。

J2EE正在使用multithreading,在那里你有一个线程来处理每个请求,在这种情况下这是不理想的。 大多数线程正在等待,所以你没有得到并行运行大量代码的好处,但是你仍然要付出上下文切换的代价和更高的内存使用。

在去node.js之前,我会考虑一件事情:是否可以并允许将node.js部署到您的生产环境中? 移动到新的平台有一些相关的成本,操作你的应用程序的人将不得不学习如何处理node.js应用程序。