2

我正在编写一个应用程序,它会爬取一长串链接、下载页面、使用xpath 查询搜索 html 元素并将一些检索到的信息存储在 mysql 数据库中。我使用多线程解决方案来充分利用我的服务器并消除延迟的影响。

我使用 csharp 和 java 编写大部分应用程序,而我使用 asp.net/c# 编写的 Web 应用程序。

我想问的是,从性能的角度来看,Node.js 是否值得考虑?考虑到吞吐量是最重要的因素。Node.js 更便携和跨平台是另一个原因,但性能对我来说更重要。

4

1 回答 1

0

我认为您的应用程序的瓶颈在于网络(HTTP 或 MySQL),而不是代码。

向上或向下,Node.js 是单线程的,基于消息队列,当所有“消息”完成时,它退出。每个 I/O 都在线程池上等待(除非您使用同步方法,不鼓励这样做)。

你的情况有几件事:

  • 您没有对处理器/线程的简单和完全控制,但您始终可以自己限制同时作业的数量
  • 您无需担心并发,因为根本没有并发
  • Node.js 中的所有 API 在设计时都考虑到了流线型 I/O,与 C# 相比,您可能只需要编写 20-50% 的代码(就行数而言)来编写网络爬虫
  • Node.js 没有内置 XML 库,你可以在 NPM 上找到一些
  • JavaScript 是一种解释型语言,代码比 C# 慢。但是由于您更多地使用 I/O,我认为它不应该让您放慢太多
  • 在 Node.js 上调试 JavaScript 很痛苦,但网络爬虫也不应该很复杂

我已经在 Node.js 上编写了一些简单的网络爬虫,并且肯定会建议您尝试一下。

于 2014-01-07T08:43:38.213 回答