本發(fā)明的實(shí)施方式大體涉及搜索內(nèi)容。更具體地,本發(fā)明的實(shí)施方式涉及既用于在線內(nèi)容搜索又用于離線內(nèi)容分析的統(tǒng)一存儲(chǔ)系統(tǒng)。
背景技術(shù):
通常,大多數(shù)搜索引擎在其操作期間通過(guò)在客戶端裝置上運(yùn)行的瀏覽器來(lái)執(zhí)行網(wǎng)頁(yè)搜索。搜索引擎接收由用戶輸入的搜索詞,并檢索與所述搜索詞相關(guān)聯(lián)的網(wǎng)頁(yè)搜索結(jié)果列表。搜索引擎基于某些標(biāo)準(zhǔn)將搜索結(jié)果顯示為搜索列表的一系列子集合。在搜索操作期間使用的一般標(biāo)準(zhǔn)為:搜索詞是完整地還是部分地出現(xiàn)在給定網(wǎng)頁(yè)上、搜索字串出現(xiàn)在搜索結(jié)果中的次數(shù)、字母順序等。此外,用戶可以通過(guò)點(diǎn)擊鼠標(biāo)按鈕來(lái)決定打開(kāi)鏈接以打開(kāi)并瀏覽??捎伤阉饕鎭?lái)監(jiān)控和采集用戶與搜索結(jié)果的一些交互和/或采集用戶信息,以隨后提供更好的搜索。
通常,由搜索引擎在線提供的內(nèi)容還可被分析系統(tǒng)離線分析。圖1是示出用于在線搜索和離線數(shù)據(jù)分析的常規(guī)網(wǎng)絡(luò)配置的框圖。參照?qǐng)D1,客戶端裝置101至102通過(guò)網(wǎng)絡(luò)103(例如,因特網(wǎng))通信地聯(lián)接至網(wǎng)頁(yè)服務(wù)器104和分析服務(wù)器105。網(wǎng)頁(yè)服務(wù)器104包括搜索引擎130,以如本示例中基于內(nèi)容存儲(chǔ)系統(tǒng)或服務(wù)器110中所存儲(chǔ)的內(nèi)容116向客戶端101(例如,瀏覽用戶)提供在線內(nèi)容搜索。由于必須在非常短的時(shí)間內(nèi)響應(yīng)于搜索查詢搜索并返回內(nèi)容,因此在線搜索系統(tǒng)(例如,網(wǎng)頁(yè)服務(wù)器104和存儲(chǔ)系統(tǒng)110)需要低延遲能力。客戶端102(例如,分析用戶)訪問(wèn)分析系統(tǒng)或服務(wù)器105以通過(guò)分析引擎140對(duì)存儲(chǔ)在分析系統(tǒng)或服務(wù)器112上的內(nèi)容118執(zhí)行離線數(shù)據(jù)分析。由于將訪問(wèn)大量的數(shù)據(jù),因此離線分析系統(tǒng)(例如,分析服務(wù)器105和存儲(chǔ)系統(tǒng)112)需要高吞吐能力??煞謩e通過(guò)etl(提取、轉(zhuǎn)換和加載)管線121至122從數(shù)據(jù)采集系統(tǒng)或數(shù)據(jù)源150接收內(nèi)容116和內(nèi)容118。
在該配置中,必須將相同的內(nèi)容加載至單獨(dú)的存儲(chǔ)系統(tǒng)110和112中,這可能導(dǎo)致不必要的冗余并需要更多存儲(chǔ)空間,而且難以令數(shù)據(jù)同步或管理數(shù)據(jù)。此外,數(shù)據(jù)采集系統(tǒng)150或其他數(shù)據(jù)源不得不維護(hù)至少兩個(gè)單獨(dú)的etl管線以將數(shù)據(jù)供給至兩個(gè)存儲(chǔ)系統(tǒng)110和112,這需要更多網(wǎng)絡(luò)帶寬及其他處理資源。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的在于提供用于搜索圖像的計(jì)算機(jī)實(shí)現(xiàn)方法、用于搜索圖像的裝置以及操作為主存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)。
根據(jù)一個(gè)方面,提供了用于搜索圖像的計(jì)算機(jī)實(shí)現(xiàn)方法,該方法可包括:在主存儲(chǔ)節(jié)點(diǎn)處從客戶端接收對(duì)于搜索圖像的搜索查詢,主存儲(chǔ)節(jié)點(diǎn)通過(guò)存儲(chǔ)網(wǎng)絡(luò)聯(lián)接至多個(gè)工作者存儲(chǔ)節(jié)點(diǎn);在主存儲(chǔ)節(jié)點(diǎn)處利用第一預(yù)定哈希函數(shù)對(duì)搜索查詢的一個(gè)或多個(gè)關(guān)鍵字執(zhí)行哈希操作從而生成第一哈希值;基于第一哈希值識(shí)別工作者存儲(chǔ)節(jié)點(diǎn)中的第一工作者存儲(chǔ)節(jié)點(diǎn);以及將搜索查詢重定向至第一工作者存儲(chǔ)節(jié)點(diǎn)以允許第一工作者存儲(chǔ)節(jié)點(diǎn)為搜索查詢服務(wù),其中第一工作者存儲(chǔ)節(jié)點(diǎn)根據(jù)搜索查詢從第一工作者存儲(chǔ)節(jié)點(diǎn)的第一系統(tǒng)存儲(chǔ)器識(shí)別一個(gè)或多個(gè)圖像并且將一個(gè)或多個(gè)圖像傳輸至客戶端。
根據(jù)另一個(gè)方面,提供了用于搜索圖像的裝置,該裝置可包括:在主存儲(chǔ)節(jié)點(diǎn)處從客戶端接收對(duì)于搜索圖像的搜索查詢的裝置,主存儲(chǔ)節(jié)點(diǎn)通過(guò)存儲(chǔ)網(wǎng)絡(luò)聯(lián)接至多個(gè)工作者存儲(chǔ)節(jié)點(diǎn);在主存儲(chǔ)節(jié)點(diǎn)處利用第一預(yù)定哈希函數(shù)對(duì)搜索查詢的一個(gè)或多個(gè)關(guān)鍵字執(zhí)行哈希操作從而生成第一哈希值的裝置;基于第一哈希值識(shí)別工作者存儲(chǔ)節(jié)點(diǎn)中的第一工作者存儲(chǔ)節(jié)點(diǎn)的裝置;以及將搜索查詢重定向至第一工作者存儲(chǔ)節(jié)點(diǎn)以允許第一工作者存儲(chǔ)節(jié)點(diǎn)為搜索查詢服務(wù)的裝置,其中第一工作者存儲(chǔ)節(jié)點(diǎn)用于根據(jù)搜索查詢從第一工作者存儲(chǔ)節(jié)點(diǎn)的第一系統(tǒng)存儲(chǔ)器識(shí)別一個(gè)或多個(gè)圖像并且將一個(gè)或多個(gè)圖像傳輸至客戶端。
根據(jù)又一個(gè)方面,提供了操作為主存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)可包括根據(jù)本申請(qǐng)實(shí)施方式的用于搜索圖像的裝置。
附圖說(shuō)明
本發(fā)明的實(shí)施方式在附圖的各圖中以舉例而非限制的方式示出,在附圖中,相同的參考數(shù)字指示相同的元件。
圖1是示出用于在線搜索和離線數(shù)據(jù)分析的常規(guī)網(wǎng)絡(luò)配置的框圖。
圖2是示出可用作本發(fā)明實(shí)施方式的網(wǎng)絡(luò)架構(gòu)的框圖。
圖3a至圖3b是示出根據(jù)本發(fā)明某些實(shí)施方式的內(nèi)存中存儲(chǔ)系統(tǒng)的示例的框圖。
圖4是示出根據(jù)本發(fā)明一實(shí)施方式的節(jié)點(diǎn)映射函數(shù)的示例的框圖。
圖5是示出根據(jù)本發(fā)明一實(shí)施方式的對(duì)象存儲(chǔ)庫(kù)(objectstore)的示例的框圖。
圖6是示出根據(jù)本發(fā)明一實(shí)施方式用于搜索內(nèi)容的過(guò)程的流程圖。
圖7是示出根據(jù)本發(fā)明一實(shí)施方式用于搜索內(nèi)容的過(guò)程的流程圖。
圖8是示出根據(jù)一實(shí)施方式的數(shù)據(jù)處理系統(tǒng)的框圖。
具體實(shí)施方式
將參考以下所討論的細(xì)節(jié)來(lái)描述本發(fā)明的各實(shí)施方式和方面,附圖將示出各種實(shí)施方式。以下描述和附圖是對(duì)本發(fā)明的說(shuō)明,而不解釋為限制本發(fā)明。描述諸多具體細(xì)節(jié)以全面理解本發(fā)明各實(shí)施方式。然而,在某些示例中,為了使對(duì)本發(fā)明實(shí)施方式的討論簡(jiǎn)潔,沒(méi)有描述公知或常規(guī)的細(xì)節(jié)。
本說(shuō)明書(shū)中對(duì)“一個(gè)實(shí)施方式”或“實(shí)施方式”的參考意味著結(jié)合該實(shí)施方式所描述的具體特征、結(jié)構(gòu)或特性可包括在本發(fā)明的至少一個(gè)實(shí)施方式中。在本說(shuō)明書(shū)中各處,短語(yǔ)“在一個(gè)實(shí)施方式中”的出現(xiàn)不必全部是指同一實(shí)施方式。
根據(jù)一些實(shí)施方式,使用單個(gè)內(nèi)存中存儲(chǔ)系統(tǒng)為用于在線內(nèi)容搜索的網(wǎng)頁(yè)服務(wù)器和用于離線數(shù)據(jù)分析的分析服務(wù)器兩者供應(yīng)內(nèi)容。術(shù)語(yǔ)“內(nèi)存中(in-memory)”表示這樣的存儲(chǔ)配置,在該存儲(chǔ)配置中,在存儲(chǔ)系統(tǒng)的操作期間待在線和/或離線供應(yīng)的內(nèi)容中的大多數(shù)內(nèi)容或全部?jī)?nèi)容被加載并保存在系統(tǒng)存儲(chǔ)器(例如,隨機(jī)存取存儲(chǔ)器或ram)中的。由于大多數(shù)或全部數(shù)據(jù)保存在系統(tǒng)存儲(chǔ)器中,因此能夠從系統(tǒng)存儲(chǔ)器直接檢索數(shù)據(jù)以為來(lái)自網(wǎng)頁(yè)服務(wù)器的搜索引擎和分析服務(wù)器的分析引擎二者的搜索請(qǐng)求服務(wù),而不必為檢索相同的數(shù)據(jù)而訪問(wèn)存儲(chǔ)系統(tǒng)的永久性存儲(chǔ)裝置(例如,硬盤(pán))。其結(jié)果是,例如能夠基本上同時(shí)滿足針對(duì)在線內(nèi)容搜索和離線數(shù)據(jù)分析的低延遲和高吞吐量?jī)蓚€(gè)要求。此外,不需要維護(hù)用于在線內(nèi)容搜索和離線數(shù)據(jù)分析的單獨(dú)的存儲(chǔ)系統(tǒng),并且能夠極大地提高數(shù)據(jù)管理的效率。另外,由于僅使用單個(gè)存儲(chǔ)系統(tǒng),因此數(shù)據(jù)源與存儲(chǔ)系統(tǒng)之間僅需要一個(gè)etl管線。
在一實(shí)施方式中,為了適應(yīng)高吞吐量的要求,存儲(chǔ)系統(tǒng)包括分布式內(nèi)存中存儲(chǔ)節(jié)點(diǎn)群或池,以聯(lián)合存儲(chǔ)內(nèi)容并且為網(wǎng)頁(yè)服務(wù)器和分析服務(wù)器提供內(nèi)容服務(wù)。分布式存儲(chǔ)節(jié)點(diǎn)的池,在本文中被稱為工作者存儲(chǔ)節(jié)點(diǎn)或從屬存儲(chǔ)節(jié)點(diǎn),可由主存儲(chǔ)節(jié)點(diǎn)或主要存儲(chǔ)節(jié)點(diǎn)管理。池中的工作者存儲(chǔ)節(jié)點(diǎn)的數(shù)量可根據(jù)可能按比例增加和減少的待供應(yīng)數(shù)據(jù)的量和工作者存儲(chǔ)節(jié)點(diǎn)之間的負(fù)載均衡來(lái)配置。
在一實(shí)施方式中,主存儲(chǔ)節(jié)點(diǎn)從客戶端接收用于搜索內(nèi)容的搜索查詢??蛻舳丝梢允菫闉g覽用戶提供內(nèi)容搜索服務(wù)的網(wǎng)頁(yè)服務(wù)器或者是為分析用戶提供數(shù)據(jù)分析服務(wù)的分析服務(wù)器。主存儲(chǔ)節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)(例如,高速以太網(wǎng)或存儲(chǔ)網(wǎng)絡(luò))管理工作者存儲(chǔ)節(jié)點(diǎn)的數(shù)量。主存儲(chǔ)節(jié)點(diǎn)響應(yīng)于搜索查詢、利用預(yù)定的哈希(hash)函數(shù)對(duì)搜索查詢的一個(gè)或多個(gè)關(guān)鍵字執(zhí)行哈希操作以生成哈希值。主存儲(chǔ)節(jié)點(diǎn)基于哈希值識(shí)別工作者存儲(chǔ)節(jié)點(diǎn)中的一個(gè)。主存儲(chǔ)節(jié)點(diǎn)將搜索查詢重定向至所識(shí)別的工作者存儲(chǔ)節(jié)點(diǎn)或者向所識(shí)別的工作者存儲(chǔ)節(jié)點(diǎn)發(fā)送另一請(qǐng)求,以允許該工作者存儲(chǔ)節(jié)點(diǎn)例如利用保存在所述工作者存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)存儲(chǔ)器中的數(shù)據(jù)來(lái)為搜索查詢服務(wù),而不必訪問(wèn)所述工作者存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)永久性存儲(chǔ)裝置。
圖2是示出可用作本發(fā)明實(shí)施方式的網(wǎng)絡(luò)架構(gòu)的框圖。參照?qǐng)D2,類似于圖1的系統(tǒng)100,客戶端裝置101至102通過(guò)網(wǎng)絡(luò)103通信地聯(lián)接至網(wǎng)頁(yè)服務(wù)器104和分析服務(wù)器105。在本示例中,網(wǎng)頁(yè)服務(wù)器104包括搜索引擎130以基于存儲(chǔ)在內(nèi)容存儲(chǔ)系統(tǒng)或服務(wù)器201中的內(nèi)容203向客戶端101(例如,瀏覽用戶)提供在線內(nèi)容搜索。客戶端102(例如,分析用戶)訪問(wèn)分析系統(tǒng)或服務(wù)器105以通過(guò)分析引擎140對(duì)存儲(chǔ)在內(nèi)容存儲(chǔ)系統(tǒng)或服務(wù)器201上的內(nèi)容203執(zhí)行離線數(shù)據(jù)分析。
客戶端裝置101-102可以是任何類型的客戶端裝置,諸如,個(gè)人計(jì)算機(jī)(例如,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)和平板)、“薄”客戶端、個(gè)人數(shù)字助理(pda)、支持網(wǎng)絡(luò)的裝置、智能手表或移動(dòng)電話(例如,智能手機(jī))等。網(wǎng)絡(luò)103可以是任何類型的網(wǎng)絡(luò),諸如有線或無(wú)線的局域網(wǎng)(lan)、廣域網(wǎng)(wan)(諸如因特網(wǎng))或其組合。服務(wù)器104至105可以是任何種類的服務(wù)器或服務(wù)器集群,諸如,網(wǎng)頁(yè)服務(wù)器或云服務(wù)器、應(yīng)用服務(wù)器、后端服務(wù)器或其組合。服務(wù)器104至105可各自進(jìn)一步包括允許客戶端(諸如客戶端裝置101至102)訪問(wèn)由服務(wù)器104至105提供的資源或服務(wù)的接口(未示出)。接口可包括網(wǎng)頁(yè)(web)接口、應(yīng)用編程接口(api)和/或命令行接口(cli)。
例如,客戶端(在本示例中為客戶端裝置101的用戶應(yīng)用(例如,網(wǎng)頁(yè)瀏覽器、移動(dòng)應(yīng)用))可向服務(wù)器104發(fā)送搜索查詢,并且搜索引擎130通過(guò)網(wǎng)絡(luò)103接收該搜索查詢。響應(yīng)于該搜索查詢,搜索引擎130從搜索查詢中提取一個(gè)或多個(gè)關(guān)鍵字(也稱為搜索詞)。搜索引擎130在由內(nèi)容系統(tǒng)或服務(wù)器201托管的內(nèi)容數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)對(duì)象203)中執(zhí)行搜索。內(nèi)容數(shù)據(jù)庫(kù)可包括主要內(nèi)容數(shù)據(jù)庫(kù)和/或輔助內(nèi)容數(shù)據(jù)庫(kù),以識(shí)別與關(guān)鍵字有關(guān)的內(nèi)容項(xiàng)目(例如,圖像)的列表。主要內(nèi)容數(shù)據(jù)庫(kù)可以是一般內(nèi)容數(shù)據(jù)庫(kù),而輔助內(nèi)容數(shù)據(jù)庫(kù)(也稱為次級(jí)內(nèi)容數(shù)據(jù)庫(kù))可以是特殊內(nèi)容或贊助內(nèi)容數(shù)據(jù)庫(kù)。搜索引擎130向客戶端返回具有列表中的至少一些內(nèi)容項(xiàng)目的搜索結(jié)果頁(yè)面,以呈現(xiàn)在客戶端中。搜索引擎130可以是能夠從百度公司獲得的
搜索引擎(諸如,網(wǎng)頁(yè)搜索引擎)是設(shè)計(jì)成在萬(wàn)維網(wǎng)上搜索信息的軟件系統(tǒng)。搜索結(jié)果通常被呈現(xiàn)在一系列結(jié)果(常稱為搜索引擎結(jié)果頁(yè)面)中。信息可以是網(wǎng)頁(yè)、圖像和其他類型文件的混合。一些搜索引擎還挖掘數(shù)據(jù)庫(kù)或開(kāi)放式目錄中可用的數(shù)據(jù)。不同于僅通過(guò)人工編輯來(lái)維持的網(wǎng)頁(yè)目錄,搜索引擎還通過(guò)在網(wǎng)頁(yè)爬蟲(chóng)上運(yùn)行算法來(lái)維護(hù)實(shí)時(shí)信息。
網(wǎng)頁(yè)搜索引擎通過(guò)存儲(chǔ)與諸多網(wǎng)頁(yè)有關(guān)的信息來(lái)運(yùn)行,所述網(wǎng)頁(yè)搜索引擎從頁(yè)面的超文本標(biāo)記語(yǔ)言(html)標(biāo)記檢索所述網(wǎng)頁(yè)。通過(guò)網(wǎng)頁(yè)爬蟲(chóng)來(lái)檢索這些頁(yè)面,所述網(wǎng)頁(yè)爬蟲(chóng)是遵循網(wǎng)站上的每個(gè)鏈接的自動(dòng)化網(wǎng)頁(yè)爬蟲(chóng)。搜索引擎接著分析每個(gè)頁(yè)面的內(nèi)容以確定其應(yīng)如何被索引(例如,可以從標(biāo)題、頁(yè)面內(nèi)容、標(biāo)頭或稱為元標(biāo)簽的特殊字段來(lái)提取字)。在圖像搜索領(lǐng)域中,基于內(nèi)容與可能的搜索詞相關(guān)聯(lián)的方式來(lái)索引圖像文件。與網(wǎng)頁(yè)或圖像有關(guān)的數(shù)據(jù)存儲(chǔ)在索引數(shù)據(jù)庫(kù)中,以供在隨后的查詢中使用。索引有助于盡可能快地找到與查詢有關(guān)的信息。
當(dāng)用戶在搜索引擎中輸入查詢時(shí)(通常是通過(guò)使用關(guān)鍵字),引擎檢查查詢的索引并根據(jù)其標(biāo)準(zhǔn)提供最匹配網(wǎng)頁(yè)或圖像的列表,所提供的最匹配網(wǎng)頁(yè)或圖像的列表通常具有包含文檔標(biāo)題且有時(shí)包括部分文本的簡(jiǎn)短概述??商娲兀峁┑牧斜戆瑘D像內(nèi)容以及其縮寫(xiě)形式的原始統(tǒng)一資源定位器(url)。索引是由與數(shù)據(jù)一起存儲(chǔ)的信息及信息被索引方法建構(gòu)而成。搜索引擎查找與輸入時(shí)完全一致的字或短語(yǔ)。一些搜索引擎提供允許用戶定義關(guān)鍵字之間的距離的高級(jí)特征(稱為接近搜索)。還存在涉及對(duì)包含你所搜索的字或短語(yǔ)的頁(yè)面使用統(tǒng)計(jì)分析的基于概念的搜索。此外,自然語(yǔ)言查詢?cè)试S用戶以與將向人詢問(wèn)問(wèn)題的形式相同的形式來(lái)鍵入問(wèn)題。
搜索引擎的有用性取決于其所回饋的結(jié)果集合的相關(guān)性。雖然包括特定字或短語(yǔ)的網(wǎng)頁(yè)可能有數(shù)百萬(wàn)個(gè),但一些頁(yè)面可能比其他頁(yè)面更相關(guān)、更流行或更有權(quán)威。大多數(shù)搜索引擎采用多種方法來(lái)對(duì)結(jié)果進(jìn)行排序以首先提供“最佳”結(jié)果。搜索引擎如何決定哪些頁(yè)面是最佳匹配者以及應(yīng)按什么次序來(lái)示出結(jié)果隨引擎的不同而廣泛改變。
內(nèi)容(例如,諸如圖像的數(shù)據(jù)對(duì)象203)可由數(shù)據(jù)采集系統(tǒng)或服務(wù)器150提供,在該數(shù)據(jù)采集系統(tǒng)或服務(wù)器150中,例如可利用諸多網(wǎng)絡(luò)爬蟲(chóng)(未示出)從一個(gè)或多個(gè)內(nèi)容提供者(例如,網(wǎng)站)采集內(nèi)容。網(wǎng)絡(luò)爬蟲(chóng)或網(wǎng)頁(yè)爬蟲(chóng)是自動(dòng)遍歷網(wǎng)絡(luò)的超文本結(jié)構(gòu)的程序。在實(shí)踐中,網(wǎng)絡(luò)爬蟲(chóng)可在獨(dú)立的計(jì)算機(jī)或服務(wù)器上運(yùn)行,所述計(jì)算機(jī)或服務(wù)器中的每一個(gè)被配置成執(zhí)行從url下載文檔的一個(gè)或多個(gè)進(jìn)程或線程。網(wǎng)絡(luò)爬蟲(chóng)接收所指派的url,并在那些url處下載文檔。網(wǎng)絡(luò)爬蟲(chóng)還可檢索被已檢索的文檔引用的文檔,以由內(nèi)容處理系統(tǒng)(未示出)和/或搜索引擎130處理。網(wǎng)絡(luò)爬蟲(chóng)可以使用各種協(xié)議來(lái)下載與url相關(guān)聯(lián)的頁(yè)面,所述協(xié)議諸如為超文本傳輸協(xié)議(http)和文件傳輸協(xié)議(ftp)。
此外,根據(jù)一實(shí)施方式,還可通過(guò)分析系統(tǒng)或服務(wù)器105的分析引擎140對(duì)數(shù)據(jù)對(duì)象203(例如,圖像)進(jìn)行分析。例如,分析用戶(由客戶端102表示)可通過(guò)網(wǎng)絡(luò)103訪問(wèn)分析服務(wù)器105以調(diào)用分析引擎140對(duì)數(shù)據(jù)對(duì)象203執(zhí)行分析。出于說(shuō)明的目的,將服務(wù)器104和內(nèi)容存儲(chǔ)系統(tǒng)/服務(wù)器201統(tǒng)稱為在線搜索系統(tǒng),并且將服務(wù)器105和內(nèi)容存儲(chǔ)系統(tǒng)/服務(wù)器201統(tǒng)稱為離線分析系統(tǒng)。如上所述,由于必須在非常短的時(shí)間內(nèi)響應(yīng)于搜索查詢搜索內(nèi)容并返回內(nèi)容,因此在線搜索系統(tǒng)需要低延遲能力。由于將訪問(wèn)大量的數(shù)據(jù),因此離線分析系統(tǒng)需要高吞吐能力。
根據(jù)一實(shí)施方式,為了滿足低延遲和高吞吐量要求,內(nèi)容存儲(chǔ)系統(tǒng)/服務(wù)器201實(shí)施為內(nèi)存中存儲(chǔ)系統(tǒng),在所述內(nèi)存中存儲(chǔ)系統(tǒng)中,基本上所有待供應(yīng)的內(nèi)容在存儲(chǔ)系統(tǒng)201的操作期間始終被加載至系統(tǒng)存儲(chǔ)器中。因此,響應(yīng)于來(lái)自在線搜索服務(wù)器104或離線分析服務(wù)器105的請(qǐng)求,可直接從保存在存儲(chǔ)器202中的內(nèi)容203中識(shí)別并檢索所請(qǐng)求的內(nèi)容以服務(wù)該請(qǐng)求,而不必訪問(wèn)內(nèi)容存儲(chǔ)系統(tǒng)201的永久性存儲(chǔ)裝置(未示出),其中訪問(wèn)永久性存儲(chǔ)裝置可能需要較長(zhǎng)時(shí)間(例如,尋道時(shí)間)。這種內(nèi)存中配置既能滿足低延遲要求也能滿足高吞吐量要求。另外,由于內(nèi)容存儲(chǔ)系統(tǒng)201由兩個(gè)服務(wù)器104至105共享,因此數(shù)據(jù)采集系統(tǒng)或數(shù)據(jù)源150僅需要建立單個(gè)etl管線205以提供待存儲(chǔ)至內(nèi)容存儲(chǔ)系統(tǒng)201中的數(shù)據(jù),而圖1所示的常規(guī)系統(tǒng)則需要至少兩個(gè)etl管線。
etl表示數(shù)據(jù)庫(kù)使用中、尤其是數(shù)據(jù)倉(cāng)儲(chǔ)中的過(guò)程,即:從同類的或不同種類的數(shù)據(jù)源提取數(shù)據(jù)、出于查詢和分析的目的轉(zhuǎn)換數(shù)據(jù)從而以適當(dāng)?shù)母袷交蚪Y(jié)構(gòu)對(duì)其進(jìn)行存儲(chǔ)、以及將數(shù)據(jù)加載至最終目標(biāo)(數(shù)據(jù)庫(kù),更具體為操作性數(shù)據(jù)儲(chǔ)存器、數(shù)據(jù)集市或數(shù)據(jù)倉(cāng)庫(kù))中。通常由于數(shù)據(jù)提取耗費(fèi)時(shí)間所以三個(gè)階段全部并行地執(zhí)行,因此當(dāng)數(shù)據(jù)被拉取時(shí),另一轉(zhuǎn)換過(guò)程對(duì)已接收的數(shù)據(jù)執(zhí)行處理并準(zhǔn)備用于加載的數(shù)據(jù),一旦存在一些準(zhǔn)備好被加載至目標(biāo)中的數(shù)據(jù),則啟動(dòng)數(shù)據(jù)加載而不等待先前階段的完成。
圖3a是示出根據(jù)本發(fā)明一實(shí)施方式的內(nèi)存中存儲(chǔ)系統(tǒng)的一示例的框圖。系統(tǒng)300可實(shí)現(xiàn)為圖2的系統(tǒng)200的一部分。參照?qǐng)D3a,在本示例中,內(nèi)存中存儲(chǔ)系統(tǒng)/服務(wù)器301可實(shí)現(xiàn)為圖2的存儲(chǔ)系統(tǒng)201的一部分。在一實(shí)施方式中,存儲(chǔ)系統(tǒng)301包括存儲(chǔ)器303和永久性存儲(chǔ)系統(tǒng)302,以及諸如處理器、網(wǎng)頁(yè)接口等的其他處理資源(未示出)。存儲(chǔ)器303可以是任何種類的易失性或非易失性隨機(jī)存取存儲(chǔ)器(ram)裝置。永久性存儲(chǔ)裝置302可以是任何種類的非易失性存儲(chǔ)裝置,諸如硬盤(pán)。永久性存儲(chǔ)裝置302存儲(chǔ)表示待服務(wù)于客戶端(諸如,網(wǎng)頁(yè)服務(wù)器104的搜索引擎130和/或分析服務(wù)器105的分析引擎140)的內(nèi)容(例如,圖像)的所有數(shù)據(jù)對(duì)象305。
在一實(shí)施方式中,在存儲(chǔ)系統(tǒng)301的操作期間基本上所有的數(shù)據(jù)對(duì)象305均作為數(shù)據(jù)對(duì)象311-313的一部分被加載至存儲(chǔ)器303中并且始終保存在存儲(chǔ)器303中。在存儲(chǔ)系統(tǒng)301的初始化期間(例如,啟動(dòng)時(shí)間),在存儲(chǔ)系統(tǒng)301的整個(gè)操作期間基本上所有的數(shù)據(jù)對(duì)象305均被加載至存儲(chǔ)器303中并且保持在存儲(chǔ)器303中。在一實(shí)施方式中,當(dāng)新的圖像變得可用并且其圖像存儲(chǔ)也被更新時(shí),也可在初始化之后將附加的圖像加載至存儲(chǔ)器中。存儲(chǔ)服務(wù)模塊304用于利用多種訪問(wèn)方法或文件系統(tǒng)協(xié)議通過(guò)網(wǎng)絡(luò)310向客戶端提供存儲(chǔ)服務(wù)。網(wǎng)絡(luò)310可以是諸如高速以太網(wǎng)或存儲(chǔ)網(wǎng)絡(luò)的高速網(wǎng)絡(luò)。此外,存儲(chǔ)系統(tǒng)301還將對(duì)象存儲(chǔ)庫(kù)315作為索引進(jìn)行維護(hù)以高速搜索數(shù)據(jù)對(duì)象311至313。
在一實(shí)施方式中,響應(yīng)于來(lái)自客戶端(在該示例中為服務(wù)器104至105)的搜索請(qǐng)求,存儲(chǔ)服務(wù)模塊304基于該請(qǐng)求在對(duì)象存儲(chǔ)庫(kù)315中執(zhí)行查找操作以識(shí)別一個(gè)或多個(gè)數(shù)據(jù)對(duì)象311至313的列表。在一實(shí)施方式中,對(duì)象存儲(chǔ)庫(kù)315是關(guān)鍵字-值(kv)存儲(chǔ)庫(kù),其中對(duì)象存儲(chǔ)庫(kù)315包括各自將特定關(guān)鍵字映射至表示一個(gè)或多個(gè)數(shù)據(jù)對(duì)象的列表的值或者標(biāo)識(shí)數(shù)據(jù)對(duì)象的對(duì)象id的若干條目。本文中的關(guān)鍵字可指代表示搜索查詢的某些特性(例如,一個(gè)或多個(gè)關(guān)鍵字)的哈希值。當(dāng)接收到搜索查詢時(shí),存儲(chǔ)服務(wù)模塊304利用預(yù)定的哈希函數(shù)對(duì)搜索查詢的至少一部分(例如,搜索查詢的一個(gè)或多個(gè)關(guān)鍵字)執(zhí)行哈希操作以生成哈希值。然后,使用哈希值作為在對(duì)象存儲(chǔ)庫(kù)315中進(jìn)行查找的關(guān)鍵字以識(shí)別數(shù)據(jù)對(duì)象的列表。
然后,可從存儲(chǔ)器303直接檢索所識(shí)別的數(shù)據(jù)對(duì)象并將其返回至客戶端,而不必針對(duì)所識(shí)別的數(shù)據(jù)對(duì)象對(duì)永久性存儲(chǔ)裝置302進(jìn)行存取,其中針對(duì)所識(shí)別的數(shù)據(jù)對(duì)象存取永久性存儲(chǔ)裝置302耗費(fèi)較長(zhǎng)時(shí)間(例如,較長(zhǎng)的尋道時(shí)間)。通過(guò)在操作期間將基本上所有的數(shù)據(jù)對(duì)象保存在存儲(chǔ)器303中,既可滿足低延遲又可滿足高吞吐量。為了進(jìn)一步提供滿足更高吞吐量要求的服務(wù),存儲(chǔ)系統(tǒng)301可以以圖3b所示的分布式存儲(chǔ)系統(tǒng)來(lái)實(shí)現(xiàn)。
下面參照?qǐng)D3b,分布式存儲(chǔ)系統(tǒng)包括包若干分布式存儲(chǔ)節(jié)點(diǎn)301a至301n,其中分布式存儲(chǔ)節(jié)點(diǎn)301a至301n中的每一個(gè)是由主節(jié)點(diǎn)350(也稱為主要存儲(chǔ)節(jié)點(diǎn))管理的內(nèi)存中存儲(chǔ)節(jié)點(diǎn)(在本文中稱為工作者存儲(chǔ)節(jié)點(diǎn)或從屬存儲(chǔ)節(jié)點(diǎn))。類似于圖3a的存儲(chǔ)系統(tǒng)301,存儲(chǔ)節(jié)點(diǎn)301a至301n中的每一個(gè)在其系統(tǒng)存儲(chǔ)器中維護(hù)存儲(chǔ)在其中的基本上所有數(shù)據(jù)對(duì)象(例如,分別存儲(chǔ)在存儲(chǔ)器303a至303n中的數(shù)據(jù)對(duì)象305a至305n)中。存儲(chǔ)節(jié)點(diǎn)301a至301n中的每一個(gè)還包括分別在上文中結(jié)合圖3a的存儲(chǔ)系統(tǒng)301而描述的存儲(chǔ)服務(wù)模塊或邏輯以及對(duì)象存儲(chǔ)庫(kù)(例如,存儲(chǔ)服務(wù)模塊304a至304n以及對(duì)象存儲(chǔ)庫(kù)315a至315n)。每個(gè)存儲(chǔ)節(jié)點(diǎn)的對(duì)象存儲(chǔ)庫(kù)存儲(chǔ)用于識(shí)別存儲(chǔ)在其中的數(shù)據(jù)對(duì)象的信息,其可以是如上所述的kv對(duì)象存儲(chǔ)庫(kù)。
主節(jié)點(diǎn)350可具有與存儲(chǔ)節(jié)點(diǎn)301a至301n相似的架構(gòu),但是被選為主存儲(chǔ)節(jié)點(diǎn)。在一實(shí)施方式中,主節(jié)點(diǎn)350包括存儲(chǔ)控制器360以基于存儲(chǔ)在節(jié)點(diǎn)映射函數(shù)365中的節(jié)點(diǎn)信息管理存儲(chǔ)節(jié)點(diǎn)301a至301n。節(jié)點(diǎn)映射函數(shù)365可實(shí)現(xiàn)為諸如例如哈希函數(shù)、節(jié)點(diǎn)映射表等的多種函數(shù)和/或數(shù)據(jù)結(jié)構(gòu)。節(jié)點(diǎn)映射函數(shù)365可稱為用于對(duì)存儲(chǔ)節(jié)點(diǎn)301a至301n中的每一個(gè)進(jìn)行注冊(cè)的節(jié)點(diǎn)注冊(cè)表,其中使用節(jié)點(diǎn)映射函數(shù)365來(lái)確定以存儲(chǔ)節(jié)點(diǎn)301a至301n中的哪個(gè)來(lái)為從服務(wù)器104至105接收的特定請(qǐng)求服務(wù)。
在一實(shí)施方式中,當(dāng)從客戶端(例如,服務(wù)器104至105)接收到對(duì)于搜索內(nèi)容(例如,圖像)的請(qǐng)求時(shí),存儲(chǔ)控制器360檢查該請(qǐng)求并且調(diào)用節(jié)點(diǎn)映射函數(shù)365以基于該請(qǐng)求確定存儲(chǔ)節(jié)點(diǎn)301a至301n中的一個(gè)或多個(gè)。然后,存儲(chǔ)控制器360向所確定的存儲(chǔ)節(jié)點(diǎn)轉(zhuǎn)發(fā)該請(qǐng)求或者發(fā)送另一請(qǐng)求,以允許存儲(chǔ)節(jié)點(diǎn)基于該請(qǐng)求識(shí)別一個(gè)或多個(gè)數(shù)據(jù)對(duì)象、從其存儲(chǔ)器中檢索所識(shí)別的數(shù)據(jù)對(duì)象、以及將數(shù)據(jù)對(duì)象作為搜索結(jié)果返回至客戶端,以上所有操作均不必針對(duì)相同的數(shù)據(jù)對(duì)象對(duì)存儲(chǔ)節(jié)點(diǎn)的永久性存儲(chǔ)裝置進(jìn)行存取。在一實(shí)施方式中,橫跨存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)對(duì)象可以是非重復(fù)的數(shù)據(jù)對(duì)象。
注意,分布式存儲(chǔ)節(jié)點(diǎn)301a至301n能夠根據(jù)工作負(fù)荷(例如,存儲(chǔ)空間要求)和帶寬(例如,負(fù)載平衡)容易地按比例增加或減小。管理員可通過(guò)將新的存儲(chǔ)節(jié)點(diǎn)注冊(cè)至節(jié)點(diǎn)映射函數(shù)365而將附加的存儲(chǔ)節(jié)點(diǎn)添加到池中。類似地,也可通過(guò)將其從節(jié)點(diǎn)映射函數(shù)365注銷來(lái)將存儲(chǔ)節(jié)點(diǎn)從池中移除。另外注意,主節(jié)點(diǎn)350還可維護(hù)其自身的表示存儲(chǔ)在其存儲(chǔ)器中的數(shù)據(jù)對(duì)象的對(duì)象存儲(chǔ)庫(kù)。因此,主節(jié)點(diǎn)350可為數(shù)據(jù)對(duì)象提供存儲(chǔ)服務(wù)以及管理其他存儲(chǔ)節(jié)點(diǎn)。當(dāng)接收到搜索請(qǐng)求時(shí),節(jié)點(diǎn)映射函數(shù)可將該請(qǐng)求映射至主節(jié)點(diǎn)350。
圖4是示出根據(jù)本發(fā)明一實(shí)施方式的節(jié)點(diǎn)映射函數(shù)的示例的框圖。參照?qǐng)D4,在一實(shí)施方式中,節(jié)點(diǎn)映射函數(shù)365(在本示例中僅出于說(shuō)明的目的將其示出為映射表)包括若干映射條目。每個(gè)映射條目將特定哈希值401映射至標(biāo)識(shí)與分布式存儲(chǔ)系統(tǒng)相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)(例如,存儲(chǔ)節(jié)點(diǎn)301a至301n)中的一個(gè)存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)節(jié)點(diǎn)id402。當(dāng)接收到搜索查詢或請(qǐng)求403時(shí),主節(jié)點(diǎn)的存儲(chǔ)控制器(例如,圖3b的主節(jié)點(diǎn)350的控制器360)利用預(yù)定的哈希函數(shù)對(duì)請(qǐng)求403的至少一部分(例如,一個(gè)或多個(gè)關(guān)鍵字)執(zhí)行哈希操作以生成哈希值。基于該哈希值,在節(jié)點(diǎn)映射表365中執(zhí)行查找操作以推導(dǎo)出存儲(chǔ)節(jié)點(diǎn)id404。然后,基于存儲(chǔ)節(jié)點(diǎn)id404從池中選擇一個(gè)存儲(chǔ)節(jié)點(diǎn)來(lái)為上述請(qǐng)求服務(wù)。注意,預(yù)定的哈希函數(shù)可實(shí)現(xiàn)為節(jié)點(diǎn)映射函數(shù)365的一部分,該節(jié)點(diǎn)映射函數(shù)365可基于搜索請(qǐng)求403直接生成存儲(chǔ)節(jié)點(diǎn)id404。
圖5是示出根據(jù)本發(fā)明一實(shí)施方式的對(duì)象存儲(chǔ)庫(kù)的示例的框圖。對(duì)象存儲(chǔ)庫(kù)315可實(shí)現(xiàn)為圖3a至圖3b中的上述對(duì)象存儲(chǔ)庫(kù)的一部分。參照?qǐng)D5,在一實(shí)施方式中,僅出于說(shuō)明的目的將對(duì)象存儲(chǔ)庫(kù)315實(shí)現(xiàn)為kv存儲(chǔ)庫(kù)。具體地,對(duì)象存儲(chǔ)庫(kù)315包括若干條目,每個(gè)條目將關(guān)鍵字映射至表示一個(gè)或多個(gè)數(shù)據(jù)對(duì)象的列表的值。在該示例中,每個(gè)映射條目將哈希值511映射至標(biāo)識(shí)一個(gè)或多個(gè)數(shù)據(jù)對(duì)象的一個(gè)或多個(gè)數(shù)據(jù)對(duì)象id512。當(dāng)例如從服務(wù)器104至105接收到搜索請(qǐng)求501時(shí),存儲(chǔ)服務(wù)模塊304利用預(yù)定哈希函數(shù)502對(duì)搜索請(qǐng)求501的至少一部分(例如,該請(qǐng)求的一個(gè)或多個(gè)關(guān)鍵字)執(zhí)行哈希操作以生成哈希值。例如通過(guò)查找模塊基于哈希值在對(duì)象存儲(chǔ)庫(kù)315中執(zhí)行查找操作以確定數(shù)據(jù)對(duì)象id503的列表。然后,直接從對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)器識(shí)別、檢索數(shù)據(jù)對(duì)象并將數(shù)據(jù)對(duì)象返回至客戶端,而不必對(duì)永久性存儲(chǔ)裝置進(jìn)行存取。
圖6是示出根據(jù)本發(fā)明一實(shí)施方式用于搜索內(nèi)容的過(guò)程的流程圖。過(guò)程600可由處理邏輯執(zhí)行,上述處理邏輯可包括軟件、硬件或其組合。例如,過(guò)程600可由圖3a的主節(jié)點(diǎn)350執(zhí)行。參照?qǐng)D6,在框601處,處理邏輯從客戶端(例如,網(wǎng)頁(yè)服務(wù)器、分析服務(wù)器)接收用于搜索數(shù)據(jù)對(duì)象的搜索查詢。在框602處,響應(yīng)于該搜索查詢,處理邏輯利用預(yù)定的哈希函數(shù)或哈希算法對(duì)搜索查詢的至少一部分執(zhí)行哈希操作從而生成哈希值。在框603處,處理邏輯基于哈希值確定池中的一個(gè)存儲(chǔ)節(jié)點(diǎn)(例如,工作者存儲(chǔ)節(jié)點(diǎn)或從屬存儲(chǔ)節(jié)點(diǎn))。例如,處理邏輯可基于該哈希值在節(jié)點(diǎn)映射表中執(zhí)行查找操作以識(shí)別存儲(chǔ)節(jié)點(diǎn)。在框604處,處理邏輯將搜索查詢重定向至所確定的存儲(chǔ)節(jié)點(diǎn)或者向所確定的存儲(chǔ)節(jié)點(diǎn)發(fā)送另一請(qǐng)求,以允許存儲(chǔ)節(jié)點(diǎn)為該搜索查詢服務(wù)。然后,存儲(chǔ)節(jié)點(diǎn)通過(guò)直接從其存儲(chǔ)器識(shí)別、檢索數(shù)據(jù)對(duì)象并且將數(shù)據(jù)對(duì)象返回至客戶端來(lái)為客戶端提供存儲(chǔ)服務(wù),而不必對(duì)該存儲(chǔ)節(jié)點(diǎn)的永久性存儲(chǔ)裝置進(jìn)行存取。
圖7是示出根據(jù)本發(fā)明一實(shí)施方式用于搜索內(nèi)容的過(guò)程的流程圖。過(guò)程700可由處理邏輯執(zhí)行,所述處理邏輯可包括軟件、硬件或其組合。例如,過(guò)程700可由存儲(chǔ)節(jié)點(diǎn)(例如,主節(jié)點(diǎn)或工作者存儲(chǔ)節(jié)點(diǎn)之一)執(zhí)行。參照?qǐng)D7,在框701處,處理邏輯在初始化(例如,啟動(dòng))期間將基本上所有的數(shù)據(jù)對(duì)象(例如,圖像)以及表示該數(shù)據(jù)對(duì)象或?qū)υ摂?shù)據(jù)對(duì)象進(jìn)行索引的對(duì)象存儲(chǔ)庫(kù)從永久性存儲(chǔ)裝置加載至存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)存儲(chǔ)器中。在一實(shí)施方式中,可在初始化之后將附加的圖像加載至系統(tǒng)存儲(chǔ)器中。一旦加載一次,則主節(jié)點(diǎn)具有關(guān)于新的數(shù)據(jù)的信息,使得查詢能夠被路由至這些新的內(nèi)容。在框702處,處理邏輯接收由客戶端(例如,網(wǎng)頁(yè)服務(wù)器、分析服務(wù)器)發(fā)起的搜索查詢。在框703處,響應(yīng)于該搜索查詢,處理邏輯利用預(yù)定的哈希函數(shù)對(duì)搜索查詢的至少一部分執(zhí)行哈希操作從而生成哈希值。在框704處,處理邏輯基于該哈希值在對(duì)象存儲(chǔ)庫(kù)中進(jìn)行查找以識(shí)別標(biāo)識(shí)一個(gè)或多個(gè)數(shù)據(jù)對(duì)象的一個(gè)或多個(gè)數(shù)據(jù)對(duì)象id。在框705處,處理邏輯直接從系統(tǒng)存儲(chǔ)器檢索數(shù)據(jù)對(duì)象,而不必針對(duì)數(shù)據(jù)對(duì)象對(duì)永久性存儲(chǔ)裝置進(jìn)行存取。在框706處,將數(shù)據(jù)對(duì)象作為搜索結(jié)果的一部分返回至客戶端。
注意,如以上示出和描述的組件中的一些或全部(例如,存儲(chǔ)控制器、存儲(chǔ)服務(wù)模塊等)可實(shí)現(xiàn)為軟件、硬件或其組合。例如,這些組件可實(shí)現(xiàn)為安裝并存儲(chǔ)在永久性存儲(chǔ)裝置中的軟件,所述軟件可通過(guò)處理器(未示出)加載至存儲(chǔ)器中并在存儲(chǔ)器中執(zhí)行以實(shí)現(xiàn)本申請(qǐng)通篇所描述的過(guò)程或操作??商娲?,這些組件可實(shí)現(xiàn)為編程或嵌入到諸如集成電路(例如,專用集成電路或asic)、數(shù)字信號(hào)處理器(dsp)或現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)的專用硬件中的可執(zhí)行代碼,所述可執(zhí)行代碼可從應(yīng)用通過(guò)對(duì)應(yīng)的驅(qū)動(dòng)器和/或操作系統(tǒng)來(lái)訪問(wèn)。另外,這些組件可實(shí)現(xiàn)為處于處理器或處理器內(nèi)核中的特定硬件邏輯,作為可通過(guò)一個(gè)或多個(gè)特定指令被軟件組件訪問(wèn)的指令集的一部分。
圖8是示出可以與本發(fā)明的一個(gè)實(shí)施方式一起使用的數(shù)據(jù)處理系統(tǒng)的示例的框圖。例如,系統(tǒng)1500可表示以上所述的執(zhí)行上述過(guò)程或方法中的任一個(gè)的任意數(shù)據(jù)處理系統(tǒng),例如像如上所述的主節(jié)點(diǎn)、工作者存儲(chǔ)節(jié)點(diǎn)。
系統(tǒng)1500可包括諸多不同的組件。這些組件可以實(shí)現(xiàn)為集合成電路(ic)、集合成電路的一部分、離散電子裝置或適于電路板的其他模塊(諸如計(jì)算機(jī)系統(tǒng)的主板或插入卡),或者實(shí)現(xiàn)為以其他方式并入計(jì)算機(jī)系統(tǒng)的底盤(pán)內(nèi)的組件。
另外注意,系統(tǒng)1500旨在示出計(jì)算機(jī)系統(tǒng)的諸多組件的高級(jí)視圖。然而,應(yīng)當(dāng)理解的是,某些實(shí)現(xiàn)方式中可具有附加的組件,此外,其他實(shí)現(xiàn)方式中可具有所示組件的不同布置。系統(tǒng)1500可以表示臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器、移動(dòng)電話、媒體播放器、個(gè)人數(shù)字助理(pda)、智能手表、個(gè)人通信器、游戲裝置、網(wǎng)絡(luò)路由器或集線器、無(wú)線接入點(diǎn)(ap)或中繼器、機(jī)頂盒或其組合。此外,雖然僅示出單個(gè)機(jī)器或系統(tǒng),但是術(shù)語(yǔ)“機(jī)器”或“系統(tǒng)”還應(yīng)當(dāng)被理解為包括單獨(dú)地或共同地執(zhí)行一個(gè)(或多個(gè))指令集合以執(zhí)行本文所討論的任意一種或多種方法的機(jī)器或系統(tǒng)的任何集合。
在一個(gè)實(shí)施方式中,系統(tǒng)1500包括通過(guò)總線或互連件1510連接的處理器1501、存儲(chǔ)器1503以及裝置1505-1508。處理器1501可表示其中包括單個(gè)處理器內(nèi)核或多個(gè)處理器內(nèi)核的單處理器或多處理器。處理器1501可表示一個(gè)或多個(gè)通用處理器,諸如微處理器、中央處理單元(cpu)等。更具體地,處理器1501可以是復(fù)雜指令集合計(jì)算(cisc)微處理器、精簡(jiǎn)指令集合計(jì)算(risc)微處理器、超長(zhǎng)指令字(vliw)微處理器、圖形處理單元(gpu)或?qū)崿F(xiàn)其他指令集合的處理器、或?qū)崿F(xiàn)指令集合組合的處理器。處理器1501還可以是一個(gè)或多個(gè)專用處理器,諸如專用集合成電路(asic)、蜂窩或基帶處理器、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、數(shù)字信號(hào)處理器(dsp)、圖形處理器、網(wǎng)絡(luò)處理器、通信處理器、加密處理器、協(xié)同處理器、嵌入式處理器或能夠處理指令的任何其他類型的邏輯。
處理器1501,可以是低功率多核處理器插座(諸如超低電壓處理器),可充當(dāng)用于與系統(tǒng)各組件通信的主處理單元和中央集線器。這種處理器可以實(shí)現(xiàn)為片上系統(tǒng)(soc)。處理器1501配置成執(zhí)行用于執(zhí)行本文所討論的操作和步驟的指令。系統(tǒng)1500還可包括與可選的圖形子系統(tǒng)1504通信的圖形接口,圖形子系統(tǒng)1504可包括顯示控制器、圖形處理器和/或顯示裝置。
處理器1501可以與存儲(chǔ)器1503通信,存儲(chǔ)器1503在一個(gè)實(shí)施方式中可以通過(guò)多個(gè)存儲(chǔ)器裝置來(lái)實(shí)現(xiàn)以提供給定量的系統(tǒng)存儲(chǔ)器。存儲(chǔ)器1503可包括一個(gè)或多個(gè)易失性存儲(chǔ)(或存儲(chǔ)器)裝置,諸如隨機(jī)存取存儲(chǔ)器(ram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(sdram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)或其他類型的存儲(chǔ)裝置。存儲(chǔ)器1503可以存儲(chǔ)包括由處理器1501或任何其他裝置執(zhí)行的指令序列的信息。例如,多種操作系統(tǒng)、裝置驅(qū)動(dòng)程序、固件(例如,輸入輸出基本系統(tǒng)或bios)和/或應(yīng)用的可執(zhí)行代碼和/或數(shù)據(jù)可以加載到存儲(chǔ)器1503中并由處理器1501執(zhí)行。操作系統(tǒng)可以是任何類型的操作系統(tǒng),例如像來(lái)自
系統(tǒng)1500還可包括io裝置,諸如裝置1505-1508:包括網(wǎng)絡(luò)接口裝置1505、可選的輸入裝置1506、其他可選的io裝置1507以及存儲(chǔ)裝置1508。網(wǎng)絡(luò)接口裝置1505可包括無(wú)線收發(fā)器和/或網(wǎng)絡(luò)接口卡(nic)。所述無(wú)線收發(fā)器可以是wifi收發(fā)器、紅外收發(fā)器、藍(lán)牙收發(fā)器、wimax收發(fā)器、無(wú)線蜂窩電話收發(fā)器、衛(wèi)星收發(fā)器(例如,全球定位系統(tǒng)(gps)收發(fā)器)或其他射頻(rf)收發(fā)器或其組合。nic可以是以太網(wǎng)卡。
輸入裝置1506可包括鼠標(biāo)、觸摸板、觸敏屏幕(其可以與顯示裝置1504整合在一起)、指示裝置(諸如指示筆)和/或鍵盤(pán)(例如,物理鍵盤(pán)或作為觸敏屏幕的一部分顯示的虛擬鍵盤(pán))。例如,輸入裝置1506可包括聯(lián)接到觸摸屏的觸摸屏控制器。觸摸屏和觸摸屏控制器例如可以使用多種觸摸靈敏度技術(shù)(包括但不限于電容、電阻、紅外和表面聲波技術(shù))中的任一種、以及使用用于確定與觸摸屏的一個(gè)或多個(gè)接觸點(diǎn)的其他接近傳感器陣列或其他元件來(lái)檢測(cè)其接觸和移動(dòng)或間斷。
io裝置1507可包括音頻裝置。音頻裝置可包括揚(yáng)聲器和/或麥克風(fēng),以促進(jìn)支持語(yǔ)音的功能,諸如語(yǔ)音標(biāo)識(shí)、語(yǔ)音復(fù)制、數(shù)字記錄和/或電話功能。其他io裝置1507還可包括通用串行總線(usb)端口、并行端口、串行端口、打印機(jī)、網(wǎng)絡(luò)接口、總線橋(例如,pci-pci橋)、傳感器(例如,運(yùn)動(dòng)傳感器,諸如加速度計(jì)、陀螺儀、磁強(qiáng)計(jì)、光傳感器、羅盤(pán)、接近傳感器等)或其組合。裝置1507還可包括成像處理子系統(tǒng)(例如,相機(jī)),所述成像處理子系統(tǒng)可包括用來(lái)促進(jìn)相機(jī)功能(諸如記錄照片和視頻片段)的光學(xué)傳感器,諸如電荷耦合裝置(ccd)或互補(bǔ)金屬氧化物半導(dǎo)體(cmos)光學(xué)傳感器。某些傳感器可以通過(guò)傳感器集線器(未示出)聯(lián)接到互連件1510,而其他裝置諸如鍵盤(pán)或熱傳感器可以由嵌入式控制器(未示出)控制,這取決于系統(tǒng)1500的特定配置或設(shè)計(jì)。
為了永久性地存儲(chǔ)諸如數(shù)據(jù)、應(yīng)用、一個(gè)或多個(gè)操作系統(tǒng)等的信息,還可將大容量存儲(chǔ)裝置(未示出)聯(lián)接到處理器1501。在各實(shí)施方式中,為了實(shí)現(xiàn)更薄且更輕的系統(tǒng)設(shè)計(jì)并且改進(jìn)系統(tǒng)響應(yīng)能力,這種大容量存儲(chǔ)裝置可以通過(guò)固態(tài)裝置(ssd)來(lái)實(shí)現(xiàn)。然而,在其他實(shí)施方式中,大容量存儲(chǔ)裝置可以主要使用硬盤(pán)驅(qū)動(dòng)(hdd)來(lái)實(shí)現(xiàn),其中較小量的ssd存儲(chǔ)裝置充當(dāng)ssd高速緩存以在斷電事件期間能夠非易失性地存儲(chǔ)上下文狀態(tài)以及其他此類信息,從而使得能夠在系統(tǒng)活動(dòng)重新啟動(dòng)時(shí)快速通電。另外,閃存裝置可以例如通過(guò)串行外圍接口(spi)聯(lián)接到處理器1501。這種閃存裝置可非易失性地存儲(chǔ)系統(tǒng)軟件,所述系統(tǒng)軟件包括基本輸入/輸出軟件(bios)以及系統(tǒng)的其他固件。
存儲(chǔ)裝置1508可包括計(jì)算機(jī)可訪問(wèn)的存儲(chǔ)介質(zhì)1509(也稱為機(jī)器可讀存儲(chǔ)介質(zhì)或計(jì)算機(jī)可讀介質(zhì)),所述存儲(chǔ)介質(zhì)1509上存儲(chǔ)有實(shí)現(xiàn)本文所述的任何一種或多種方法或功能的一個(gè)或多個(gè)指令集合或軟件(例如,模塊、單元和/或邏輯1528)。模塊/單元/邏輯1528可以表示任意上述組件,例如像以上所述的搜索引擎、編碼器、交互記錄模塊、存儲(chǔ)服務(wù)模塊、存儲(chǔ)控制器。模塊/單元/邏輯1528還可以在其由數(shù)據(jù)處理系統(tǒng)1500、存儲(chǔ)器1503和處理器1501執(zhí)行期間完全地或至少部分地駐留在存儲(chǔ)器1503內(nèi)和/或處理器1501內(nèi),另外構(gòu)成機(jī)器可訪問(wèn)的存儲(chǔ)介質(zhì)。模塊/單元/邏輯1528還可以通過(guò)網(wǎng)絡(luò)經(jīng)由網(wǎng)絡(luò)接口裝置1505被發(fā)送或接收。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1509也可以用來(lái)永久性地存儲(chǔ)以上描述的一些軟件功能。雖然計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1509在示例性實(shí)施方式中被示為單個(gè)介質(zhì),但是術(shù)語(yǔ)“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”應(yīng)當(dāng)被認(rèn)為包括存儲(chǔ)一個(gè)或多個(gè)指令集合的單個(gè)介質(zhì)或多個(gè)介質(zhì)(例如,集合中式或分布式數(shù)據(jù)庫(kù)和/或相關(guān)聯(lián)的高速緩存和服務(wù)器)。術(shù)語(yǔ)“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”還應(yīng)當(dāng)被認(rèn)為包括能夠存儲(chǔ)或編碼指令集合的任何介質(zhì),所述指令集合用于由機(jī)器執(zhí)行并且導(dǎo)致所述機(jī)器執(zhí)行本發(fā)明的任何一種或多種方法。因此,術(shù)語(yǔ)“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”應(yīng)當(dāng)被認(rèn)為包括但不限于固態(tài)存儲(chǔ)器以及光學(xué)介質(zhì)和磁性介質(zhì)或者任何其他非暫時(shí)性機(jī)器可讀介質(zhì)。
本文所述的模塊/單元/邏輯1528、組件以及其他特征可以實(shí)現(xiàn)為離散硬件組件或整合在硬件組件(諸如asics、fpga、dsp或類似裝置)的功能中。另外,模塊/單元/邏輯1528可以實(shí)現(xiàn)為硬件裝置內(nèi)的固件或功能電路。此外,模塊/單元/邏輯1528可以以硬件裝置和軟件組件的任何組合來(lái)實(shí)現(xiàn)。
注意,雖然系統(tǒng)1500被示出為具有數(shù)據(jù)處理系統(tǒng)的各組件,但是這不旨在表示任何具體的架構(gòu)或互連組件的方式;因?yàn)榇祟惣?xì)節(jié)和本發(fā)明的實(shí)施方式?jīng)]有密切關(guān)系。還將理解,具有更少組件或可能具有更多組件的網(wǎng)絡(luò)計(jì)算機(jī)、手持計(jì)算機(jī)、移動(dòng)電話、服務(wù)器和/或其他數(shù)據(jù)處理系統(tǒng)也可與本發(fā)明的實(shí)施方式一起使用。
前述詳細(xì)描述中的一些部分已經(jīng)依據(jù)在計(jì)算機(jī)存儲(chǔ)器內(nèi)對(duì)數(shù)據(jù)位的運(yùn)算的算法和符號(hào)表示而呈現(xiàn)。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域中的技術(shù)人員所使用的方法,以最有效地將它們的工作實(shí)質(zhì)傳達(dá)給本領(lǐng)域中的其他技術(shù)人員。這里,算法通常被認(rèn)為是導(dǎo)致所期望結(jié)果的前后一致的操作序列。這些操作是需要對(duì)物理量進(jìn)行物理操控的操作。
然而,應(yīng)當(dāng)牢記,所有這些和類似的術(shù)語(yǔ)均意圖與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),并且僅僅是應(yīng)用于這些量的適宜標(biāo)記。除非在以上討論中另外明確地說(shuō)明清楚,否則應(yīng)當(dāng)了解,在本說(shuō)明書(shū)通篇利用術(shù)語(yǔ)(諸如以下權(quán)利要求書(shū)中所闡述的術(shù)語(yǔ))的討論是指計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算裝置的動(dòng)作和處理,所述計(jì)算機(jī)系統(tǒng)或電子計(jì)算裝置操控計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的表示為物理(例如,電子)量的數(shù)據(jù),并將所述數(shù)據(jù)變換成計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其他此類信息存儲(chǔ)器、傳輸或顯示裝置內(nèi)類似地表示為物理量的其他數(shù)據(jù)。
各圖中所示的技術(shù)可以使用存儲(chǔ)在一個(gè)或多個(gè)電子裝置上并在所述一個(gè)或多個(gè)電子裝置上執(zhí)行的代碼及數(shù)據(jù)來(lái)實(shí)施。此類電子裝置使用計(jì)算機(jī)可讀介質(zhì)來(lái)存儲(chǔ)和傳送(在內(nèi)部和/或通過(guò)網(wǎng)絡(luò)與其他電子裝置進(jìn)行傳送)代碼及數(shù)據(jù),所述計(jì)算機(jī)可讀介質(zhì)諸如為非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,磁盤(pán)、光盤(pán)、隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器、閃存裝置、相變存儲(chǔ)器)和暫時(shí)性計(jì)算機(jī)可讀傳輸介質(zhì)(例如,電子、光學(xué)、聲學(xué)或其他形式的傳播信號(hào)—諸如載波、紅外信號(hào)、數(shù)字信號(hào))。
前述附圖中所描繪的過(guò)程或方法可由處理邏輯來(lái)執(zhí)行,所述處理邏輯包括硬件(例如,電路、專用邏輯等)、固件、軟件(例如,在非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn))或兩者的組合。雖然所述過(guò)程或方法在上文中依據(jù)一些順序操作來(lái)描述,但是應(yīng)當(dāng)了解,所描述操作中的一些可以按不同的次序執(zhí)行。此外,一些操作可以并行地而不是順序地執(zhí)行。
在以上說(shuō)明書(shū)中,已經(jīng)參考本發(fā)明的具體示例性實(shí)施方式對(duì)本發(fā)明的實(shí)施方式進(jìn)行了描述。將顯而易見(jiàn)的是:在不脫離如以下權(quán)利要求書(shū)中闡述的本發(fā)明的更寬泛精神和范圍的情況下,可以對(duì)這些實(shí)施方式做出各種修改。因此,應(yīng)當(dāng)在說(shuō)明性意義而不是限制性意義上來(lái)理解說(shuō)明書(shū)和附圖。