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

简介: 本文描述的是Search&Index如何实时修改和检索,Spider子系统如何能实时找到全网新生成的网页,又是另外一个问题,未来撰文讲述。

一、缘起

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

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

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

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

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

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

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

本篇将讨论:

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

二、实时搜索引擎架构

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

(1)索引分级

(2)dump&merge

索引分级

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

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

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

如下图所述:

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

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

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

image.png

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

image.png

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

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

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

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

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

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

dump&merge

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

image.png

dumper:将在线的数据导出

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

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

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

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

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

三、总结

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

(1)索引分级

(2)dump&merge

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

==【完】==

目录
相关文章
pandown网页版百度网盘在线免登录、免安装、不限速
_Pandownload网页版_是百度网盘的高速下载工具,可在PC和手机上使用,提供不限速下载。通过粘贴分享链接到官网([f.then.asia/#/index](https://f.then.asia/#/index)),或在链接后加`wp`快速访问,可实现高速下载。网页版有时会自动填充提取码,但限制每日下载次数,适用于无百度账号的地区。注意避免使用多线程下载器导致异常。
pandown网页版百度网盘在线免登录、免安装、不限速
|
4天前
|
数据采集 JavaScript 前端开发
详尽分享网站网页中加入各种分享按钮功能百度分享
详尽分享网站网页中加入各种分享按钮功能百度分享
|
算法 搜索推荐 索引
网页权重和百度快照之间的关系
网页权重和百度快照之间的关系www.20200824.com
将github pages搭建的网页添加到百度搜索资源平台
将github pages搭建的网页添加到百度搜索资源平台
221 0
将github pages搭建的网页添加到百度搜索资源平台
|
API 定位技术 数据格式
第151天:网页中插入百度地图方法(不需要密钥)
今天分享一个在网页中插入百度地图的方法,不需要密钥哦,前两天,我试了好多次百度开发平台上使用百度地图的方法,都需要申请密钥,申请了,还是用不了,后来,终于发现了一个不需要密钥的方法,希望对需要的朋友有帮助! 1、打开百度地图生成器链接:http://api.
2264 0
|
JavaScript 定位技术
第150天:网页中插入百度地图方法(需要密钥)
在现在的很多页面中,都运用到了百度地图来定位,例如: 像这样的地图,我们可以通过手动来进行放大、缩小、移动等来查找具体的地址,特别方便,在页面上引用也显得页面很有特点,那么,应该怎么样来制作这种地图呢? 一、获取源代码     网址:http://api.
1489 0