百度如何能实时检索到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子系统如何能实时找到全网新生成的网页,又是另外一个问题,未来撰文讲述。

==【完】==

目录
相关文章
|
Android开发
Android 11 添加Service服务SELinux问题
Android 11 添加Service服务SELinux问题
847 1
|
Web App开发 前端开发 安全
前端小知识之【浏览器内核】
前端小知识之【浏览器内核】
429 0
|
前端开发 Java
|
5月前
|
人工智能 BI 语音技术
AR眼镜+AI大模型:颠覆工业设备验收流程的智能革命
本方案结合AR眼镜与AI视觉大模型,打造高效、精准、可追溯的设备验收流程。通过第一视角记录、智能识别、结构化数据生成与智能报表功能,提升验收效率与质量,助力企业实现智能化管理。
|
安全 数据安全/隐私保护
谨防二维码陷阱:揭秘网络钓鱼攻击与保护措施
当我们深入了解二维码的世界时,了解它们的特性和潜在风险变得至关重要,揭示了伴随其广泛普及的更为阴暗的一面
531 1
|
Ubuntu Linux
Linux服务器的自动启动可以在哪里进行配置?
Linux服务器的自动启动可以在哪里进行配置?
424 3
|
资源调度 算法
深入理解网络中的死锁和活锁现象
【8月更文挑战第24天】
716 0
|
JavaScript
vue导出pdf(接口)
vue导出pdf(接口)
196 3
|
数据采集 JSON JavaScript
JS逆向-反反爬案例
破解爬虫JS加密反爬, 逆向JS解析
|
网络安全 开发工具 数据安全/隐私保护
阿里云搭建FTP服务器,完成文件传输
本文主要使用搭建FTP服务器的系统是ubuntu18.04,租的服务器是阿里云服务器(ecs.t6-c1m1.large)。决定想在服务器上搭建FTP主要是为了方便传输文件,网上方法众多,因此我将我从头到尾搭建FTP并且传输文件的步骤和问题记录在此,方便想尝试的人学习。
阿里云搭建FTP服务器,完成文件传输