• 爬虫框架Aragog:一个用于处理数以十亿计的URL的怪兽
  • 张琳 发表于 2015/12/1 22:41:00 | 分类标签: 爬虫框架 Aragog 框架
  • 为了在Pin上展示有用的信息(如产品价格、位置数据)、做出更好的推荐及打击垃圾邮件,Pinterest需要充分利用Pin链接的Web页面中的内容。除了要抓取、存储及处理页面内容外,还要低延迟地向Pinner提供处理过的内容。为了满足这些需求,他们构建了爬虫框架Aragog,用于处理数以十亿计的URL。近日,Pinterest核心基础设施团队工程师Varun Sharma撰文介绍了该框架。

    他们在构建Aragog时重点考虑了以下三个方面的问题:

    URL“标准化/规范化(Normalization/canonicalization)”:同样的URL可以表示成许多不同的形式,多个不同的URL可能会重定向到同一个URL。URL标准化/规范化的目标就是消除重复,减少数据量。 
    数据抓取礼仪:限定抓取频率,尊重robots.txt所设定的规则。 
    URL数据建模:存储从单个URL中提取的多段元数据,或者存储及更新与单个URL相关的入链和出链。 

    如下图所示,Aragog包含两个服务:Aragog Fetcher会将URL规范化,并按照限定频率抓取Web页面;Aragog UrlStore则负责存储和提供与URL相关的元数据。
    Aragog Fetcher

    Aragog Fetcher是一个Thrift服务。它会发出一个HTTP请求,并返回一个封装了页面内容、HTTP头、抓取延迟、重定向链等数据的Thrift结构。为了实现礼貌抓取,Aragog Fetcher会将特定域名的robots.txt文件内容缓存7天,并严格按照其中的规则进行抓取。此外,Aragog Fetcher会使用URL域名调用“频率限制器(rate limiter)”获取允许的抓取频率。该限制器将单个域名的最大抓取频率限定为10QPS。需要的话,可以通过配置管理系统修改这一限制。

    Aragog UrlStore

    Rich Pin的数据即是由Aragog UrlStore提供的。Aragog UrlStore存储着页面内容本身、页面中提取的半结构化数据及Web图元数据(如入链/出链),其设计主要遵循如下两个目标:
    为整个组织提供所有URL元数据的一站式服务; 
    以可以接受的延迟为Pinterest全部在线读流量以及离线处理系统的读-写流量提供服务。 
    为此,他们在延迟、稳定性和一致性之间进行了权衡。Varun举了两个例子。

    关于页面内容

    他们会存储Web页面的全部内容。这些数据检索次数少,而且仅用于离线处理管道。因此,他们选择将这些数据存储在S3上。每个Web页面都作为一个S3文件单独存储。他们以URL散列值作为Web页面的键,但发现,当许多键的前缀都一样时,会导致S3集群中的单台机器过载,降低了S3 bucket中部分键的性能。

    关于Pin元数据

    Aragog UrlStore采用了一种灵活的数据模型表示URL元数据,其中包含一个字段名和值的映射。例如,一个产品Pin可能有一个“product_name”字段和一个“price”字段。在大多数情况下,一个URL的元数据由离线处理系统增量更新。

    考虑到URL元数据访问要求低延迟,而URL入链/出链非常适合用图模型表示,他们选择使用Zen(基于Hbase)作为底层存储系统。Zen是Pinterest的图存储服务,允许定义节点及连接这些节点的边。Zen的属性用于存储节点元数据,而边用于为入链/出链建模。Zen会在节点和边上创建索引,提供快速高效的CRUD操作。
    Aragog已经成为Pinterest的一个基础设施,许多管道都用它获取和处理数据及提供URL内容。目前,Aragog每天获取数以百万计的URL,并提供数以十亿计的在线URL请求。

  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:张琳
  • 加入时间:2013/6/13 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮