nodejs作业服务器(多用途)

W. *_*ckx 3 job-scheduling node.js

我是相当新的,只是了解node.js(作为PHP开发人员的背景).我在nodejs网站上看过一些nodeJs的例子和视频.

目前我正在运行一个视频网站,在后台需要执行很多任务.目前这是由调用php脚本的cronjobs完成的.这种方法的缩减是当其他进程启动时,当前一个进程仍在工作时,您将在服务器上获得高负载等.

需要在服务器上完成的作业如下:

  • 从网站抓取Feed并将其插入mysql数据库
  • 从网站获取数据(抓取)(根据要求)
  • 生成报告数据.这些主要是需要执行的mysql查询.

需要在将来完成的任务

  • 记录视频视图(当用户访问视频页面时)(这也将记录到mysql)
  • 一般记录访客
  • 根据搜索到的视频展示广告

我希望能够调用一个url,这样一份工作就可以排队,也可以按时间安排工作,也可以不断运行.

我不知道node.js是否是遵循的路径,这就是我在这里问的原因.在节点中执行此操作有什么好处?缩小?

node.js有什么专业人士?

谢谢你的回复!

Mic*_*ley 7

虽然传统上用于Web /网络任务(Web服务器,IRC聊天服务器等),但当您为其提供任何类型的IO绑定(而不是CPU绑定)任务时,Node.js会发光,因为它使用完全异步的IO(即是,所有IO都发生在主事件循环之外).例如,Node可以轻松地保持打开许多套接字,等待每个套接字上的数据,或者非常有效地将数据流入和流出文件.

听起来你只是在找工作队列 ; 一个流行的是Resque,虽然它是为Ruby编写的,但还有PHP,Node.js等版本.还有专门为PHP构建的作业队列; 如果你想坚持使用PHP,谷歌搜索"PHP作业队列"会让你走得更远.

现在,使用Node.js的一个优点是,它非常容易处理大量IO.当然我只是猜测,但根据你的要求,它可能是一个很好的工具:

  • 从网站上抓取数据/提要 - 主要是等待网络IO
  • 将数据插入MySQL - 主要是在网络IO上等待
  • 报告 - 再次,Node擅长MySQL查询,但可能不太擅长分析数据
  • 调用URL来安排作业 - Node的内置HTTP处理和优秀的Web库使这个变得简单

因此,您可能希望尝试使用Node来完成这些任务.如果您这样做,请查看Resque for Node或其他作业系统,如Kue.如果你不需要复杂的东西,建立你自己的也不是很难--Redis是一个很好的工具.

您可能希望使用Node的原因有几个.如果你不熟悉JavaScript和偶数连续传递样式编程,Node.js可能会有一些学习曲线,因为你必须强迫自己停止同步思考.此外,如果您的程序中确实有很多繁重的非IO任务,例如分析数据,Node将不会优秀,因为这些计算将阻止主事件循环并阻止Node处理异步IO的回调等.最后,如果您已经有很多PHP或其他语言的逻辑,那么用您选择的语言找到解决方案可能更容易和/或更快.