7

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

这个想法很简单:

  1. 服务器接收到大量 UDP 流量,其中包含来自另一台服务器的用户数据的短消息。

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

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

这种情况是否是学习 node.js 的好场景,或者与 Java EE 相比,它可能没有任何好处?

4

1 回答 1

4

免责声明:我在一家为 node.js 做出贡献并推广其使用的公司工作,所以我的意见可能有偏见。

正如其他人在评论中提到的那样,node.js 应该非常适合您的场景。它实际上是人们使用 node.js 的最常见场景之一——从(可能是多个)源获取数据,进行少量 CPU 轻量级处理,然后发回响应或存储结果。除非消息过滤非常耗费 CPU,否则 node.js 实现可能会优于 J2EE 版本。

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

J2EE 正在使用多线程,其中您有一个线程来处理每个请求,这在这种情况下是次优的。大多数线程都在等待,因此您无法获得并行运行大量代码的好处,但您仍然需要为上下文切换和更高的内存使用付出代价。

在使用 node.js 之前,我会考虑一件事:您是否能够并允许将 node.js 部署到您的生产环境中?迁移到新平台会产生一些相关成本,操作您的应用程序的人员必须学习如何处理 node.js 应用程序。

于 2013-05-20T08:30:21.497 回答