美文网首页python爬虫日记本爬虫进化日记爬虫专题
分布式爬虫笔记(三)- 分布式存储

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

作者: Spareribs | 来源:发表于2017-08-09 20:06 被阅读125次

    分布式存储

    分布式的存储包括网页文件的存储和爬虫队列的存储,在前面分享的分布式爬虫笔记(二)- 多线程&多进程爬虫实现多线程爬虫使用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
    多线程 +多进程(改进).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内存级别的速度,能提高判断效率加快爬取进度。

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

    相关文章

      网友评论

        本文标题:分布式爬虫笔记(三)- 分布式存储

        本文链接:https://www.haomeiwen.com/subject/nkwqrxtx.html