项目情况
最近做了一个爬虫系统,使用scrapy 作为核心,用kafka作队列,然后加上 java的消费者,还有其它周边服务,形成一个架构,这里进行一个简单的整理
基础结构
考虑到数据的扩展性和互联网的不确认性,考虑使用 nosql来存储大部分业务数据,同时为了更好的处理文字搜索, 于是决定使用elasticsearch + mysql的方式来处理.
然后,我们考虑了底层服务,这涉及到数据获取,解析与内容的保存,这一层的实现逻辑也有很多,经过找网上资料和讨论思考,我们决定采用python爬虫框架.
引入异步队列
但我们计算到,爬虫的数据量比较大,如果让一个流程同时做 获取,解析,整理,保存,会导致这个流程过长,是一件风险比较大的事,而且,爬虫的网络环境和,整理保存的环境不太一样,耦合到一起不是靠谱的事.所以我们引入了异步结构,使用kafka作为我们的消息队列,接收python来的数据. 同时提供一个消费者对数据进行消费.
引入定时器
同时,对爬虫获取数据的时机,我们需要有一个爬虫开启的,有两种方案,1让python进程自己定时执行,2,引入外部进程管理. 考虑到内聚原则,我们采用2方案,同时这个外部进程定时器也可以做其它的定时工作,统一管理.