• 淘搜索之网页抓取系统分析与实现(1)—redis使用


    1.redis使用

    (1)应用

    redis在抓取系统中主要承担两方面的责任,其一是作为链接存储数据库,其二是与ceawler一起并作为crawler的调度器。后者将在“scrapr+redis(http://blog.csdn.net/u012150179/article/details/38226915)”中阐述。

    (2)为什么选择redis

    redis的特性体现在“内存数据库”和“KV”存储方式上,前者决定其性能,后者决定其存储内容的易于组织性。
    reidis的使用适合链接的大量存取、快速调度的使用情景,最主要的是,由于链接需要的存储空间有限,内存的容量并不构成存储瓶颈,这时,存取速度(每秒十万次左右)便称为了redis的极大优势。
    数据结构的易用性。

    2.redis链接存储架构

    (1)架构与部署

    图1 redis存储架构
    图2 部署

    (2)分析

    i)reidis master + redis slave

    master+slave一般是为了防止单点故障的出现,保护数据的安全。
    这是一种通过复制(replication)实现数据同步的机制,避免鸡蛋放在一个篮子的危险性。实现起来也很简单,只需设定slave的配置文件中的
    slaveof <masterip> <masterport>
    相应ip和port即可。除了数据安全保障,这种机制的另一特色就是读写分离,分担负载。其它可查看文章:(Redis学习手册(主从复制))。
    但是注意的是默认情况下配置为slave的数据库是只读的,可通过配置文件中的slave-read-only修改。
    redis数据安全另一保障是持久化机制,将内存中的数据保存到硬盘中。他提供了RDB和AOF两种方式。本质上讲AOF安全性更高,RDB备份文件更小恢复更快。更详细可见:(http://redis.readthedocs.org/en/latest/topic/persistence.html)

    ii)redis数据结构应用

    在文章的阐述中,可以得到几种数据结构在链接存储上的应用。如使用hash结构存储链接信息。待抓取的url队列和更新的url队列使用list。而redis几种结构的选择一般遵循如下原则:
    list-适合实现queue和stack的功能,在首尾部的push和pop操作更方便。
    hash-存储的信息有多个字段。
    set-集合。可以利用在集合中不能出现重复元素的特性将其作为filter使用。
    sorted set-元素需要排序。

    3.代码实现

     

    4.参考文章

    [1]快速构建实时抓取集群
    [2]淘宝摘星
    转载自:http://blog.csdn.net/u012150179/article/details/38226711

  • 相关阅读:
    LAMP搭建示例
    MySQL主从
    list多字段去重
    mysql按照某一个条件进行分组统计,同时又要保证一个相同字段的数据只统计一次
    sentinel自定义异常处理
    sentinel规则持久化
    zookeeper
    shiro
    iframe之间传递参数
    自定义标签
  • 原文地址:https://www.cnblogs.com/lmsj/p/6504767.html
Copyright © 2020-2023  润新知