返回介绍

百度如何能实时检索到 15 分钟前新生成的网页?

发布于 2025-02-23 22:52:40 字数 1996 浏览 0 评论 0 收藏 0

一、缘起

《 深入浅出搜索架构(上篇) 》详细介绍了前三章:

(1)全网搜索引擎架构与流程

(2)站内搜索引擎架构与流程

(3)搜索原理与核心数据结构

《 深入浅出搜索架构(中篇) 》介绍了:

(4)流量数据量由小到大,常见搜索方案与架构变迁

(5)数据量、并发量、扩展性架构方案

本篇将讨论:

(6)百度为何能实时检索出 15 分钟之前新出的新闻?58 同城为何能实时检索出 1 秒钟之前发布的帖子? 搜索引擎的实时性架构 ,是本文将要讨论的问题。

二、实时搜索引擎架构

大数据量、高并发量情况下的搜索引擎为了保证实时性,架构设计上的两个要点:

(1)索引分级

(2)dump&merge

索引分级

《 深入浅出搜索架构(上篇) 》介绍了搜索引擎的底层原理,在数据量非常大的情况下,为了保证倒排索引的高效检索效率,任何对数据的更新,并不会实时修改索引,一旦产生碎片,会大大降低检索效率。

既然索引数据不能实时修改,如何保证最新的网页能够被索引到呢?

索引分为 全量库、日增量库、小时增量库

如下图所述:

(1)300 亿数据在全量索引库中

(2)1000 万 1 天内修改过的数据在天库中

(3)50 万 1 小时内修改过的数据在小时库中

搜索引擎-实时定点写
当有修改请求发生时,只会操作最低级别的索引,例如小时库。
搜索引擎-实时分段读

当有 查询 请求发生时,会同时查询各个级别的索引,将结果合并,得到最新的数据:

(1)全量库是紧密存储的索引,无碎片,速度快

(2)天库是紧密存储,速度快

(3)小时库数据量小,速度也快


数据的写入和读取都是实时的,所以 58 同城能够检索到 1 秒钟之前发布的帖子,即使全量库有 300 亿的数据。

新的问题来了:小时库数据何时反映到天库中,天库中的数据何时反映到全量库中呢?

dump&merge

这是由两个异步的工具完成的:

搜索引擎-异步导出、合并

dumper :将在线的数据导出

merger :将离线的数据合并到高一级别的索引中去

小时库,一小时一次,合并到天库中去;

天库,一天一次,合并到全量库中去;

这样就保证了小时库和天库的数据量都不会特别大;

如果数据量和并发量更大,还能增加星期库,月库来缓冲。

三、总结

超大数据量,超高并发量,实时搜索引擎的两个架构要点:

(1)索引分级

(2)dump&merge


如《 深入浅出搜索架构(上篇) 》中所述,全网搜索引擎分为 Spider, Search&Index, Rank 三个部分。本文描述的是 Search&Index 如何实时修改和检索,Spider 子系统如何能实时找到全网新生成的网页,又是另外一个问题,未来撰文讲述。

希望大家有收获,帮转哟。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文