WebMagic-Avalon之分布式实现方案

WebMagic之前具有基本的分布式功能,可以将一个Spider部署到多台机器上,并通过Redis来管理URL,达到多机合作抓取的目标。

我在WebMagic-Avalon里计划完成一个管理后台,通过这个后台可以新建、管理和监控爬虫,具体的产品形态,见草图http://my.oschina.net/flashsword/blog/202889

这个系统涉及到一个Spider的动态创建和管理的问题。之前WebMagic是一个Java应用内部框架,并不具有动态创建的能力,也没有外部管理的能力。于是,在WebMagic-Avalon里,需要一个新的分布式方案。

总体架构:

WebMagic-distributed-architecture

这个系统共有4个角色:

Scheduler:

Scheduler是WebMagic的基本角色,它对需要抓取的URL进行管理,并进行去重等工作。Scheduler是集中式的,使用Redis来实现Scheduler是比较好的选择。

Spider:

Spider是WebMagic的基本角色,即对某一个站点的爬虫,它包括下载、解析以及持久化的工作。它会从Scheduler中拉到URL来处理,并添加新的URL到Scheduler。Spider是多线程的,单机的多个Spider可能会共用一个线程池。

Worker:

Worker对应一台机器,它包含多个Spider,提供Http方式的API,供外部系统进行控制,从而在本地创建、管理Spider。Worker是无状态的,非常容易水平扩展。

Admin:

Admin对应一台机器,它知道所有Worker的地址,提供Web页面,开发者可以在Admin的页面操作,操作后Admin发送Http请求到Worker来发布任务。

其他技术选型:

1. 容器:

  • Worker和Admin都是war包,可以部署到Web容器中,同时也内置Jetty,支持直接启动。
  • 考虑到维护性问题,Web框架还是使用较为主流的Spring MVC。

2. 存储:

  • 系统内部的信息存储使用Mysql,可能后期会提供一个本地化的数据库如H2,以做到开箱即用。
  • URL管理基于Redis,虽然数据规模小的时候,Mysql也能胜任,但是Redis仍然最理想的选择。
  • 抓取结果的存储由用户自定义,默认支持Mysql和文件。

3. 通讯:

  • Admin和Worker直接通过Http API通讯,数据交换格式为JSON。
  • Admin可以直接发布爬虫需求,使用forger在客户端解析配置,并产生新爬虫。

转载于:https://my.oschina.net/flashsword/blog/207626

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值