BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Aragog:Pinterest的爬虫框架

| 作者 谢丽 关注 10 他的粉丝 发布于 2015年12月1日. 估计阅读时间: 5 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

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

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

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

重要通知:接下来InfoQ将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注InfoQ微信公众号第一时间阅读精品内容。

如下图所示,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请求。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT