首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >百度如何能搜出5分钟之前的网页?(第98讲,收藏)

百度如何能搜出5分钟之前的网页?(第98讲,收藏)

作者头像
架构师之路
发布2025-11-24 15:30:04
发布2025-11-24 15:30:04
70
举报
文章被收录于专栏:架构师之路架构师之路

《架构师之路:架构设计中的100个知识点》

98.搜索引擎架构与细节

产品提了一个需求:

检索的时效性,对用户体验来说很重要,必须检索出5分钟之前的新闻,1秒钟之前发布的帖子,不复杂吧?

百度为何能实时检索出5分钟之前新出的新闻?同城为何能实时检索出1秒钟之前发布的帖子?

实时搜索引擎系统架构的要点是什么?

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

1. 索引分级;

2. dump&merge;

首先,在数据量非常大的情况下,为了保证倒排索引的高效检索效率,任何对数据的更新,并不会实时修改索引。

画外音:因为,一旦产生碎片,会大大降低检索效率。

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

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

图片
图片

如上图所述:

1. 300亿数据在全量索引库中;

2. 1000万1天内修改过的数据在天库中;

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

有修改请求发生时,只会操作最低级别的索引,例如小时库。

图片
图片

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

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

2. 天库是紧密存储,速度快;

3. 小时库数据量小,速度也快;

分级索引能够保证实时性,那么,新的问题来了,小时库数据何时反映到天库中,天库中的数据何时反映到全量库中呢?

dump&merge,索引的导出与合并,由这两个异步的工具完成:

图片
图片

dumper:将在线的数据导出。

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

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

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

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

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

简单小结一下:

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

1. 索引分级;

2. dump&merge;

知其然,知其所以然。

思路比结论更重要。

==全文完==

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档