网络爬虫项目开发日志(二):爬虫架构设计

架构设计原则:

      1、不过度设计,所有设计都是本着服务业务的初心。

      2、保留足够的可拓展性

      3、开发成本降至最低(学习成本+开发时效+开源技术优先+去IOE)


架构设计计划:

       一言不合,先上图,下面是爬虫系统架构目标,分为三个阶段如下:

网络爬虫项目开发日志(二):爬虫架构设计_第1张图片

一期:

      业务上的需求是,按需爬取网页,而且查询的体量也会很小,因为公司业务刚刚起步,所以OK,我们架构的侧重点就是查询的时效,也就是爬取并返回结果的时效上了。

所以两点,1)爬取的话尽量不用webriver,直接采用httpclient提起请求;2)通过MQ来解耦爬取层和DAL持久层

     所以,一期我们的系统流程如下,所有的后台开发都是模块化,方便后期拓展,MQ选型初步定在Redis。

网络爬虫项目开发日志(二):爬虫架构设计_第2张图片


但是,经过实际实施过后,我们发现以下两个问题

1、每次接口请求,都去爬取的话会极大的增加响应RT,带来的用户体验非常差。

2、RestFul接口端和Spider爬虫业务耦合太紧密,不利于后期业务的拓展。

针对这两点,我们作出以下两点改动:

1、我们的接口服务端首先去DB查询记录直接返回给前端,假如DB中没有相关记录,首先我们会返回前端查询失败,

于此同时我们推一条消息到MQ队列中,由消费端去做爬取和持久化的操作,时候会告知前端我们已经爬取入库成功。

2、在Restful接口和MQ之间加一个ServiceDispatch层用来转接查询请求的,前端只需要传查询参数+任务类别之类的信息过来,

ServiceDispatch会发送对应的消息到指定的Topic中。

流程图演化如下:

网络爬虫项目开发日志(二):爬虫架构设计_第3张图片

所以,架构1.0展示如下:

网络爬虫项目开发日志(二):爬虫架构设计_第4张图片

开工!!

你可能感兴趣的:(网络爬虫项目开发日志(二):爬虫架构设计)