分布式爬虫笔记(三)- 分布式存储
2017-08-09 本文已影响125人
Spareribs
分布式存储
分布式的存储包括网页文件的存储和爬虫队列的存储,在前面分享的分布式爬虫笔记(二)- 多线程&多进程爬虫实现多线程爬虫使用deque来存储URL信息,实现多线程爬虫使用mysql来存储URL信息。
- 文件使用HBASE(条件限制本次没有使用到这个:待测试)
- 缓存已爬取的URL使用redis(优点:直接在内存中处理,速度快)
- url相关信息存入momgo(有点:结构是文档式的,拓展性超强)
代码下载
多进程爬虫 - mongo :与mysql的多进程类似,只是换了一个数据库
多进程爬虫 - mongo+redis
对比分析
多线程
多线程.jpg多线程 + 多进程
多线程 +多进程 .jpg多线程 + 多进程(改进)
架构 | 获取URL(避免多个进程获取同一个URL获取) | 去重 |
---|---|---|
Deque Spider threading BloomFilter |
通过Deque双向队列的pop获取 | BloomFilter |
Mysql Spider threading Spider process |
通过Mysql的status字段加行级锁 | 通过Mysql UNIQUE KEY唯一 |
Mongo Spider threading Spider process redis |
Mongo的锁 | redis |
架构 | 获取URL(避免多个进程获取同一个URL获取) | 去重 |
---|---|---|
Deque Spider threading BloomFilter |
通过Deque双向队列的pop获取 | BloomFilter |
Mysql Spider threading Spider process |
通过Mysql的status字段加行级锁 | 通过Mysql UNIQUE KEY唯一 |
Mongo Spider threading Spider process redis |
Mongo的锁 | redis |
后记
基本上都是类似的内容,换汤不换药,但是从性能和效率方面会有很大的提高,数据存储使用mongo方面爬虫数据方面存储的扩展,高效的redis内存级别的速度,能提高判断效率加快爬取进度。
以上都是我的个人观点,如果有不同的看法,或者有更好的方法,欢迎留言~~~