新聞中心
一、緣起

《深入淺出搜索架構(gòu)(上篇)》詳細(xì)介紹了前三章:
(1)全網(wǎng)搜索引擎架構(gòu)與流程
(2)站內(nèi)搜索引擎架構(gòu)與流程
(3)搜索原理與核心數(shù)據(jù)結(jié)構(gòu)
《深入淺出搜索架構(gòu)(中篇)》介紹了:
(4)流量數(shù)據(jù)量由小到大,常見搜索方案與架構(gòu)變遷
(5)數(shù)據(jù)量、并發(fā)量、擴(kuò)展性架構(gòu)方案
本篇將討論:
(6)百度為何能實(shí)時檢索出15分鐘之前新出的新聞?58同城為何能實(shí)時檢索出1秒鐘之前發(fā)布的帖子?搜索引擎的實(shí)時性架構(gòu),是本文將要討論的問題。
二、實(shí)時搜索引擎架構(gòu)
大數(shù)據(jù)量、高并發(fā)量情況下的搜索引擎為了保證實(shí)時性,架構(gòu)設(shè)計上的兩個要點(diǎn):
(1)索引分級
(2)dump&merge
索引分級
《深入淺出搜索架構(gòu)(上篇)》介紹了搜索引擎的底層原理,在數(shù)據(jù)量非常大的情況下,為了保證倒排索引的高效檢索效率,任何對數(shù)據(jù)的更新,并不會實(shí)時修改索引,一旦產(chǎn)生碎片,會大大降低檢索效率。
既然索引數(shù)據(jù)不能實(shí)時修改,如何保證***的網(wǎng)頁能夠被索引到呢?
索引分為全量庫、日增量庫、小時增量庫。
如下圖所述:
(1)300億數(shù)據(jù)在全量索引庫中
(2)1000萬1天內(nèi)修改過的數(shù)據(jù)在天庫中
(3)50萬1小時內(nèi)修改過的數(shù)據(jù)在小時庫中
當(dāng)有修改請求發(fā)生時,只會操作***級別的索引,例如小時庫。
當(dāng)有查詢請求發(fā)生時,會同時查詢各個級別的索引,將結(jié)果合并,得到***的數(shù)據(jù):
(1)全量庫是緊密存儲的索引,無碎片,速度快
(2)天庫是緊密存儲,速度快
(3)小時庫數(shù)據(jù)量小,速度也快
數(shù)據(jù)的寫入和讀取都是實(shí)時的,所以58同城能夠檢索到1秒鐘之前發(fā)布的帖子,即使全量庫有300億的數(shù)據(jù)。
新的問題來了:小時庫數(shù)據(jù)何時反映到天庫中,天庫中的數(shù)據(jù)何時反映到全量庫中呢?
dump&merge
這是由兩個異步的工具完成的:
dumper:將在線的數(shù)據(jù)導(dǎo)出
merger:將離線的數(shù)據(jù)合并到高一級別的索引中去
小時庫,一小時一次,合并到天庫中去;
天庫,一天一次,合并到全量庫中去;
這樣就保證了小時庫和天庫的數(shù)據(jù)量都不會特別大;
如果數(shù)據(jù)量和并發(fā)量更大,還能增加星期庫,月庫來緩沖。
三、總結(jié)
超大數(shù)據(jù)量,超高并發(fā)量,實(shí)時搜索引擎的兩個架構(gòu)要點(diǎn):
(1)索引分級
(2)dump&merge
如《深入淺出搜索架構(gòu)(上篇)》中所述,全網(wǎng)搜索引擎分為Spider, Search&Index, Rank三個部分。本文描述的是Search&Index如何實(shí)時修改和檢索,Spider子系統(tǒng)如何能實(shí)時找到全網(wǎng)新生成的網(wǎng)頁,又是另外一個問題,未來撰文講述。
【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】
網(wǎng)頁標(biāo)題:百度如何能實(shí)時檢索到15分鐘前新生成的網(wǎng)頁?
新聞來源:http://m.5511xx.com/article/dhccedg.html


咨詢
建站咨詢
