我打算构建一个nodejs应用程序作为Web应用程序的后端。
这个服务器应用程序将提供一个rest api,websockets服务和进程,每隔n小时用一个无头导航(比如zombie.js)来抓取一些网站来提供数据库。
我想问一下,如果在一个nodejs实例中构建所有东西,或者如果最好为每个任务使用几个nodejs应用程序,那么它是否是一个很好的方法。
答案 0 :(得分:1)
如果您的应用程序规模较小(以后不需要扩展),您可以在同一个项目中保留Rest,Socket和scraping的所有内容。
注意:在处理HTML内容后进行抓取后,需要一些时间以同步方式处理。所以那时事件循环将被阻止。所以Rest API不会处理任何请求。在这种情况下,您可以将Rest和Socket结合在一个项目中并在另一个项目中进行Scraping。
如果您计划在不久的将来扩展,我建议保留单独的实例,考虑扩展SOA的好处。
答案 1 :(得分:-2)
在我看来,更好的方法是使用不同的Node.js应用程序。第一个将为您的API提供服务。另一个将作为不同端口上的套接字服务器。
关于scrapper,它可以是PHP(以及nodejs)脚本,它将作为cron作业运行。如何设置cron作业你可以检查这个问题: https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job
或Ubuntu服务器的本教程:https://help.ubuntu.com/community/CronHowto
我认为这将是最佳方法。