分布式爬虫笔记(三)- 分布式存储

分布式存储

分布式的存储包括网页文件的存储和爬虫队列的存储,在前面分享的分布式爬虫笔记(二)- 多线程&多进程爬虫实现多线程爬虫使用deque来存储URL信息,实现多线程爬虫使用mysql来存储URL信息。

  • 文件使用HBASE(条件限制本次没有使用到这个:待测试)
  • 缓存已爬取的URL使用redis(优点:直接在内存中处理,速度快)
  • url相关信息存入momgo(有点:结构是文档式的,拓展性超强)

代码下载

多进程爬虫 - mongo :与mysql的多进程类似,只是换了一个数据库
多进程爬虫 - mongo+redis

对比分析

多线程

分布式爬虫笔记(三)- 分布式存储_第1张图片
多线程.jpg

多线程 + 多进程

分布式爬虫笔记(三)- 分布式存储_第2张图片
多线程 +多进程 .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
分布式爬虫笔记(三)- 分布式存储_第3张图片
多线程 +多进程(改进).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

后记

基本上都是类似的内容,换汤不换药,但是从性能和效率方面会有很大的提高,数据存储使用mongo方面爬虫数据方面存储的扩展,高效的redis内存级别的速度,能提高判断效率加快爬取进度。

以上都是我的个人观点,如果有不同的看法,或者有更好的方法,欢迎留言~~~

你可能感兴趣的:(分布式爬虫笔记(三)- 分布式存储)