百度如何能實(shí)時(shí)檢索到15分鐘前新生成的網(wǎng)頁(yè)?

2018-09-06 17:53 更新

一、緣起

深入淺出搜索架構(gòu)(上篇)》詳細(xì)介紹了前三章:

(1)全網(wǎng)搜索引擎架構(gòu)與流程

(2)站內(nèi)搜索引擎架構(gòu)與流程

(3)搜索原理與核心數(shù)據(jù)結(jié)構(gòu)


深入淺出搜索架構(gòu)(中篇)》介紹了:

(4)流量數(shù)據(jù)量由小到大,常見(jiàn)搜索方案與架構(gòu)變遷

(5)數(shù)據(jù)量、并發(fā)量、擴(kuò)展性架構(gòu)方案


本篇將討論:

(6)百度為何能實(shí)時(shí)檢索出15分鐘之前新出的新聞?58同城為何能實(shí)時(shí)檢索出1秒鐘之前發(fā)布的帖子?搜索引擎的實(shí)時(shí)性架構(gòu),是本文將要討論的問(wèn)題。


二、實(shí)時(shí)搜索引擎架構(gòu)

大數(shù)據(jù)量、高并發(fā)量情況下的搜索引擎為了保證實(shí)時(shí)性,架構(gòu)設(shè)計(jì)上的兩個(gè)要點(diǎn):

(1)索引分級(jí)

(2)dump&merge


索引分級(jí)

深入淺出搜索架構(gòu)(上篇)》介紹了搜索引擎的底層原理,在數(shù)據(jù)量非常大的情況下,為了保證倒排索引的高效檢索效率,任何對(duì)數(shù)據(jù)的更新,并不會(huì)實(shí)時(shí)修改索引,一旦產(chǎn)生碎片,會(huì)大大降低檢索效率。


既然索引數(shù)據(jù)不能實(shí)時(shí)修改,如何保證最新的網(wǎng)頁(yè)能夠被索引到呢?

索引分為全量庫(kù)、日增量庫(kù)、小時(shí)增量庫(kù)。


如下圖所述:

(1)300億數(shù)據(jù)在全量索引庫(kù)中

(2)1000萬(wàn)1天內(nèi)修改過(guò)的數(shù)據(jù)在天庫(kù)中

(3)50萬(wàn)1小時(shí)內(nèi)修改過(guò)的數(shù)據(jù)在小時(shí)庫(kù)中

搜索引擎-實(shí)時(shí)定點(diǎn)寫(xiě)
當(dāng)有修改請(qǐng)求發(fā)生時(shí),只會(huì)操作最低級(jí)別的索引,例如小時(shí)庫(kù)。
搜索引擎-實(shí)時(shí)分段讀

當(dāng)有查詢請(qǐng)求發(fā)生時(shí),會(huì)同時(shí)查詢各個(gè)級(jí)別的索引,將結(jié)果合并,得到最新的數(shù)據(jù)

(1)全量庫(kù)是緊密存儲(chǔ)的索引,無(wú)碎片,速度快

(2)天庫(kù)是緊密存儲(chǔ),速度快

(3)小時(shí)庫(kù)數(shù)據(jù)量小,速度也快


數(shù)據(jù)的寫(xiě)入和讀取都是實(shí)時(shí)的,所以58同城能夠檢索到1秒鐘之前發(fā)布的帖子,即使全量庫(kù)有300億的數(shù)據(jù)。

新的問(wèn)題來(lái)了:小時(shí)庫(kù)數(shù)據(jù)何時(shí)反映到天庫(kù)中,天庫(kù)中的數(shù)據(jù)何時(shí)反映到全量庫(kù)中呢?

dump&merge

這是由兩個(gè)異步的工具完成的:

搜索引擎-異步導(dǎo)出、合并

dumper將在線的數(shù)據(jù)導(dǎo)出

merger將離線的數(shù)據(jù)合并到高一級(jí)別的索引中去


小時(shí)庫(kù),一小時(shí)一次,合并到天庫(kù)中去;

天庫(kù),一天一次,合并到全量庫(kù)中去;

這樣就保證了小時(shí)庫(kù)和天庫(kù)的數(shù)據(jù)量都不會(huì)特別大;

如果數(shù)據(jù)量和并發(fā)量更大,還能增加星期庫(kù),月庫(kù)來(lái)緩沖。


三、總結(jié)

超大數(shù)據(jù)量,超高并發(fā)量,實(shí)時(shí)搜索引擎的兩個(gè)架構(gòu)要點(diǎn):

(1)索引分級(jí)

(2)dump&merge


如《深入淺出搜索架構(gòu)(上篇)》中所述,全網(wǎng)搜索引擎分為Spider, Search&Index, Rank三個(gè)部分。本文描述的是Search&Index如何實(shí)時(shí)修改和檢索,Spider子系統(tǒng)如何能實(shí)時(shí)找到全網(wǎng)新生成的網(wǎng)頁(yè),又是另外一個(gè)問(wèn)題,未來(lái)撰文講述。 

希望大家有收獲,幫轉(zhuǎn)喲。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)