之前前面提到 爬虫 ,只是单纯的单条执行,既然用go来写爬虫,那么必须要用到 并发来做这件事情
废话不多说,先上 设计图
1 首先整个结构分为三层
第一层 定时更新器 层 timerupdate
第二层 调度层 dispatch
第三层 协程池层 pools
关系为
一个定时更新器—> 对应一个 调度器 也就是调度器管理一个定时更新器
比分说 有10个定时器 就对应有10 个调度器 ,比如控制一个调度器,开启一个定时器,或者stop 一个定时器
然后 调度层 管理多个调度器
调度层的功能主要是负责 创建一个调度器,通知一个调度器,去管理它自己的对应的 定时更新器
多个调度器里面的 任务 汇聚一起 发送给 任务池中 pools
//-------------------------下面是整个程序的执行顺序----------------------------
首先 当我们有任务来了,比方说抓取爬虫任务,我要抓取几个书籍分类的,但是众所周知 一个网站中一个分类下面有成千上万本书籍
但是我要同时抓取 这个网站上面所有 分类下面的,所有书籍
此时 我们可以把一个分类看成一个 定时抓取器,那么我们多个分类是不是就应该产生多个更新器呢,新的问题来了,我们该如何知道一个分类是不是抓取完了,还有就是我并不想抓取完整个分类的内容,
那么由此就有了<