深入浅出搜索架构(终篇)| 百度如何能实时检索到15分钟前新生成的网页?

赞赏 2017-03-01

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


一、缘起

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

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

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

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

 

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

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

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

 

本篇将讨论:

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

 

二、实时搜索引擎架构

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

1)索引分级

2dump&merge

 

索引分级

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


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

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

 

如下图所述:

1300亿数据在全量索引库中

210001天内修改过的数据在天库中

3501小时内修改过的数据在小时库中

 


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


 


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

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

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

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


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

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

 

dump&merge

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

dumper在线的数据导出

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

 

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

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

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

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

 

三、总结

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

1)索引分级

2dump&merge

 

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

 

希望大家有收获,帮哟。

==【完】==


登陆后阅读全文
阅读 2357 赞赏 0 有用 9 没用 0 收藏 0 分享

   



0 条留言

ESTRELA的头像

ESTRELA

架构师之路

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

漫画:如何破解MD5算法?

漫画:什么是MD5算法?

Node也许不是构建大型服务的最佳选择——Node之父Ryan Dahl访谈录

7个有益的编程习惯

58技术部线上操作与线上问题排查实战

不看任何数学公式的情况下理解傅里叶分析

多对多业务,数据库水平切分架构一次搞定

没想到,从人工智能手上救下愚蠢的人类的,竟然是.... 验证码???

或许你不知道的10条SQL技巧((sql 优化 sql索引优化))

怎样才能生成一亿个不重复的随机数 | 算法

手机扫一扫
分享文章