前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见分布式应用系统设计图解(七):爬虫搜索系统

常见分布式应用系统设计图解(七):爬虫搜索系统

作者头像
四火
发布2022-07-19 14:47:57
4780
发布2022-07-19 14:47:57
举报
文章被收录于专栏:四火的唠叨

互联网搜索引擎都有爬虫系统,无论是 Google 还是百度。当然这里我们讨论的只是一个极其简单的版本。

对于爬到的资源,我们这里其实讨论的只是文本而已,还有图片、音频、视频这些媒体,如果我们也需要存下来,那就需要专门的媒体服务。对于媒体文件的存放,在之前的文中已经讨论过,这里就不再覆盖了。

  • 上半部分是爬取的过程,Page Fetcher 根据 URL 队列里面的事件来去实际的页面中爬取内容。不同的网站可以使用不同的 queue,配合从不同 queue 中 poll 的策略,这样可以合理分配资源,避免对某一个网站投入了太多的资源。爬虫需要解析 robot.txt,也要限制爬取的进程/线程数,保证不会有太多的爬虫访问冲垮网站。
  • DNS Service 其实是一个统一存储域名到 IP 解析服务的组件,这个组件可以缓存下一些 DNS 的查询结果,因为如果单纯地在每次爬取过程中依赖于互联网 DNS 查询,请求量会过大,而且具备大量的重复请求。
  • Dedup(去重)是一个重要的步骤,既包括文档的重复识别,也包括 URL 的重复识别,可以使用一个简单的 checksum 来实现,对于新的网页文本和 URL,分别存到各自的数据库里面。
  • 网页的数据库可以使用 Bigtable 这样适合存放小型文本的存储服务,URL 则可以存放到 KV 数据库中。为了提高查询和比较的效率,checksum 可以缓存在内存中。
  • 对于网页上新(未爬取)的 URL,放到队列中,以便爬虫工作。
  • 下半部分包括了索引的建立,即从查询词到文本内容的索引。也包括了搜索这个行为——Search Service 处理查询语句,查询索引数据,进行过滤和排序,并返回结果,而页面镜像可以从 Document Service 处获取。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档