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中,输出收集器不再是线程安全的,因此请确保在它们上同步时异步发送内容.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些