WebMagic-Avalon之分布式实现方案
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> WebMagic之前具有基本的分布式功能,可以将一个Spider部署到多台机器上,并通过Redis来管理URL,达到多机合作抓取的目标。 我在WebMagic-Avalon里计划完成一个管理后台,通过这个后台可以新建、管理和监控爬虫,具体的产品形态,见草图 http://my.oschina.net/flashsword/blog/202889 。 这个系统涉及到一个Spider的动态创建和管理的问题。之前WebMagic是一个Java应用内部框架,并不具有动态创建的能力,也没有外部管理的能力。于是,在WebMagic-Avalon里,需要一个新的分布式方案。 总体架构: 这个系统共有4个角色: Scheduler: Scheduler是WebMagic的基本角色,它对需要抓取的URL进行管理,并进行去重等工作。Scheduler是集中式的,使用Redis来实现Scheduler是比较好的选择。 Spider: Spider是WebMagic的基本角色,即对某一个站点的爬虫,它包括下载、解析以及持久化的工作。它会从Scheduler中拉到URL来处理,并添加新的URL到Scheduler。Spider是多线程的,单机的多个Spider可能会共用一个线程池。 Worker: Worker对应一台机器