项目情况
最近做了一个爬虫系统,使用scrapy 作为核心,用kafka作队列,然后加上 java的消费者,还有其它周边服务,形成一个架构,这里进行一个简单的整理
基础结构
考虑到数据的扩展性和互联网的不确认性,考虑使用 nosql来存储大部分业务数据,同时为了更好的处理文字搜索, 于是决定使用elasticsearch + mysql的方式来处理.
然后,我们考虑了底层服务,这涉及到数据获取,解析与内容的保存,这一层的实现逻辑也有很多,经过找网上资料和讨论思考,我们决定采用python爬虫框架.

引入异步队列
但我们计算到,爬虫的数据量比较大,如果让一个流程同时做 获取,解析,整理,保存,会导致这个流程过长,是一件风险比较大的事,而且,爬虫的网络环境和,整理保存的环境不太一样,耦合到一起不是靠谱的事.所以我们引入了异步结构,使用kafka作为我们的消息队列,接收python来的数据. 同时提供一个消费者对数据进行消费.

引入定时器
同时,对爬虫获取数据的时机,我们需要有一个爬虫开启的,有两种方案,1让python进程自己定时执行,2,引入外部进程管理. 考虑到内聚原则,我们采用2方案,同时这个外部进程定时器也可以做其它的定时工作,统一管理.


本文介绍了一种基于Scrapy的爬虫系统架构,利用Kafka作为消息队列,配合Java消费者,通过Elasticsearch和MySQL处理大量数据,实现高效的数据抓取与存储。系统采用异步队列和定时器,形成集群结构,以提高性能。

1134

被折叠的 条评论
为什么被折叠?



