web-crawler – 使用php在Storm中进行非阻塞HTTP调用

我正在评估使用Storm构建一个webcrawler(实时框架,而不是IDE).我的Spout将提供一个URI流,必须在第一个Bolt中调用和检索,这是用PHP编写的.

来自node.js背景,我知道可以使用回调以非阻塞方式构建这样的功能.我天真的想法是,只为该Bolt配置很多任务,以便在一些Taks等待答案时可以充分利用资源.问题是,php为每个进程分配了大量资源是臭名昭着的,我不知道Storm是如何在内部管理的,如果这是一个好主意.

在这种环境中,类似node.js的行为是否可行?或者我必须切换到另一种语言来实现它(如果是这样,我该怎么做)?

最佳答案
我写了一个使用Storm& amp;非阻塞HTTP调用,尽管是在Java中.我们一直在生产中使用它,它的效果非常好.

我们有一个从一个喷口进来的URL流,它被发送到履带式螺栓.每个螺栓都会产生非阻塞的HTTP请求,我会在其上注册一个回调函数,该回调函数会将结果发送给输出收集器.即是的,你可以使用Storm进行非阻塞IO.

我不熟悉PHP开发,所以我不能对此发表评论,但无论你做什么,由于进程间消息传递,它与基于JVM的语言相比可能表现得相当差.

注意:在最新版本的Storm中,输出收集器不再是线程安全的,因此请确保在它们上同步时异步发送内容.

转载注明原文:web-crawler – 使用php在Storm中进行非阻塞HTTP调用 - 代码日志