基于 pyspider 搭建分布式集群爬虫流程

背景介绍

pyspider 架构,大概的流程如下图所示:

基于 pyspider 搭建分布式集群爬虫流程

 

整个 pyspider 的各个模块间的任务传递是由**消息队列**传输的,其中任务的调度则是由「scheduler」模块控制,所以按作者的意思,除了「scheduler」调度模块只能单点,其他的「fetcher」,「processor」,甚至是「monitor & webui」,都可以实现多实例分布式部署。

这样一来分布式 pyspider 的瓶颈就在单点的 「scheduler」 节点的消费能力了,实际跑起来观察后发现确实「processor」到「scheduler」发送任务的队列经常消费不过来。

言归正传

之前将单机的 pyspider 部署在一台机子上,这一台负责「数据存储」,「消息队列」,「任务调度」,「URL请求」,「页面处理」全部的爬虫相关任务,导致 CPU 利用率一直很高。
所以现在单独开了一台机子,专门负责「URL请求」和「页面处理」,即上述的「fetcher」和「processor」模块。

主机地址、数据库、消息队列

  • 爬虫机器1: 192.168.1.33
  • 爬虫机器2: 192.168.1.71
上一篇:电商数仓3.0 - 电商数据仓库系(1) - 知识点总结


下一篇:[从源码学设计]蚂蚁金服SOFARegistry 之 自动调节间隔周期性任务