RELATEED CONSULTING
相關咨詢
選擇下列産品馬上(shàng)在線溝通(tōng)
服務時(shí)間(jiān):9:00-18:00
你(nǐ)可(kě)能遇到了下面的問題
關閉右側工具欄
天貓11.11:搜索引擎實時(shí)秒(miǎo)級更新
  • 作(zuò)者:admin
  • 發表時(shí)間(jiān):2014-11-11 15:20:36
  • 來(lái)源:未知

搜索是很(hěn)多(duō)用戶在天貓購物時(shí)的第一入口,搜索結果會(huì)根據銷量、庫存、人(rén)氣對商品進行(xíng)排序,而商品的顯示順序往往會(huì)決定用戶的選擇,所以保證搜索結果的實時(shí)性和(hé)準确性非常重要。在電(diàn)商系統中,特别是在“雙十一”這樣的高(gāo)并發場(chǎng)景下,如何準确展示搜索結果顯得(de)尤為(wèi)重要。在今年的“雙十一”活動中,InfoQ有(yǒu)幸采訪到了阿裏巴巴集團搜索引擎的三位負責人(rén)仁基、桂南和(hé)悾傅,與他們共同探討(tǎo)了搜索引擎背後的細節。以下內(nèi)容根據本次采訪整理(lǐ)而成。

阿裏巴巴的搜索引擎承擔着全集團的搜索業務,包括淘寶、天貓、1688等系統,對比傳統的搜索引擎,阿裏集團的搜索引擎有(yǒu)一些(xiē)比較大(dà)的突破性、創造性的工作(zuò)。傳統的搜索引擎,隻可(kě)以做(zuò)到離線全量、增量構建索引,而阿裏的搜索引擎已經是演變成為(wèi)一個(gè)能夠做(zuò)到離線、增量、實時(shí)三個(gè)等級的搜索引擎。電(diàn)商平台最大(dà)的一個(gè)特點就是短(duǎn)時(shí)高(gāo)并發,像雙十一這樣的活動中,搜索引擎需要考慮如何讓流量發揮更大(dà)的價值。傳統的搜索引擎解決短(duǎn)時(shí)高(gāo)并發的思路是添加緩存層以減少(shǎo)搜索引擎的訪問量,而這樣的解決方案,天貓之前也有(yǒu)使用,但(dàn)是緩存會(huì)有(yǒu)延遲,實時(shí)搜索的需求根本無法滿足。所以為(wèi)了解決實時(shí)的問題,阿裏的搜索引擎去掉了應用層和(hé)業務層的緩存,重點優化和(hé)提升引擎層的服務能力。為(wèi)了兼顧實時(shí)性和(hé)吞吐量,搜索引擎實現了全量、增量、實時(shí)三種更新通(tōng)路。通(tōng)過三種方式的靈活組合,在保證了海量數(shù)據定期全量更新的同時(shí)提供了秒(miǎo)級實時(shí)更新能力,避免了數(shù)據延遲,提升了用戶體(tǐ)驗。

從整體(tǐ)上(shàng)來(lái)看,阿裏搜索引擎的架構圖如下。從上(shàng)到下,分别是應用層、業務層、搜索引擎層、離線處理(lǐ)層和(hé)DB層,應用層其實就是調用方,大(dà)的來(lái)看可(kě)以分為(wèi)Web、App、Wap。業務層會(huì)針對相應的業務對搜索結果進行(xíng)整理(lǐ),如Android和(hé)iOS的搜索結果顯示是不一樣的。搜索引擎層有(yǒu)點類似傳統系統的搜索引擎,阿裏巴巴的搜索引擎會(huì)在搜索的基礎上(shàng)根據用戶習慣提供個(gè)性化的搜索結果。索引層主要包括全量索引和(hé)流式計(jì)算(suàn),全量索引其實就是一個(gè)基于Hadoop/HBase的離線集群,而流式計(jì)算(suàn)是阿裏自己研發的一套系統。之所以沒有(yǒu)選用Storm,是因為(wèi)在這一層中,光有(yǒu)計(jì)算(suàn)是不夠的,還(hái)需要有(yǒu)數(shù)據的存儲(開(kāi)源解決方案HBase)。如果使用Storm,接下來(lái)會(huì)面臨一個(gè)問題,Storm是一個(gè)集群,HBase又會(huì)是一個(gè)集群,這樣,Storm的Disk以及HBase的CPU其實都沒有(yǒu)充分利用到,所以阿裏的方案是Hadoop Yarn與HBase混合部署,把兩個(gè)集群合并在一起,既可(kě)以做(zuò)大(dà)規模的數(shù)據處理(lǐ),也可(kě)以做(zuò)流式計(jì)算(suàn),通(tōng)過這樣的方式,可(kě)以将離線和(hé)實時(shí)計(jì)算(suàn)更好地融合。最底層的數(shù)據源層會(huì)把用戶、商品、交易信息同步到上(shàng)層的HBase集群中。

天貓11.11:搜索引擎實時(shí)秒(miǎo)級更新

Storm是一個(gè)無狀态的流式計(jì)算(suàn)框架,而無狀态的流式計(jì)算(suàn)體(tǐ)系,更适合做(zuò)簡單的統計(jì)分析,比如針對成交維度或者點擊維度做(zuò)計(jì)數(shù)。而阿裏自研的流式計(jì)算(suàn)框架iStream,已經不再是簡單的、無狀态的流式計(jì)算(suàn)概念。iStream借助HBase集群存儲用戶狀态,以完成一些(xiē)相對複雜的模型的計(jì)算(suàn)。同時(shí)模型的計(jì)算(suàn)結果可(kě)以通(tōng)過相應的接口直接推送到上(shàng)層的搜索引擎中,以服務每一條流量的排序變化。

在搜索引擎層,不僅包括商品的搜索引擎,還(hái)會(huì)包括其它層面的服務(如架構圖所示)。商品搜索引擎中包含商品、店(diàn)鋪、活動等維度的信息,而圖中的個(gè)性化服務旨在為(wèi)用戶提供個(gè)性化的搜索體(tǐ)驗,個(gè)性化服務會(huì)根據用戶的實時(shí)行(xíng)為(wèi)反饋搜索結果。而QP(Query Planner)會(huì)對用戶的搜索請(qǐng)求進行(xíng)分析(搜索詞、搜索場(chǎng)景、頁面)進一步個(gè)性化搜索服務。在搜索引擎層,通(tōng)過這三個(gè)系統的互相配合為(wèi)上(shàng)層的業務層提供個(gè)性化的搜索數(shù)據。

不同的業務對應的搜索排序結果不同,阿裏搜索引擎中排序部分是通(tōng)過類似鏈式處理(lǐ)的方式實現的,內(nèi)部稱為(wèi)排序鏈。排序鏈是由不同的用戶特征對應的算(suàn)法插件組合而成,算(suàn)法插件是單獨存在的,可(kě)以根據具體(tǐ)情況組合到不同業務的排序鏈中。目前在線上(shàng)運行(xíng)的排序鏈有(yǒu)幾十條,系統會(huì)根據不同的業務、用戶、場(chǎng)景、Query選擇不同的排序邏輯

而在雙十一這樣的高(gāo)并發活動中,搜索引擎需要保證流量的合理(lǐ)分配,比如搜索結果中不能顯示售罄的商品。但(dàn)是對于一些(xiē)熱門(mén)商品,從庫存充足到售罄可(kě)能是幾分鍾的時(shí)間(jiān)。為(wèi)了保證搜索結果的實時(shí)性,阿裏搜索引擎架構針對這樣的場(chǎng)景做(zuò)了優化,去掉了不能感知業務變化的緩存(業務層),重點優化搜索引擎層的緩存。以商品售罄的場(chǎng)景為(wèi)例,當商品售罄時(shí),業務系統會(huì)發送異步消息通(tōng)知離線集群,離線集群通(tōng)過流式計(jì)算(suàn)将更新同步到引擎,而當引擎返回搜索結果時(shí),會(huì)在緩存的基礎上(shàng)對結果進行(xíng)二次過濾,從而保證搜索結果的實時(shí)性和(hé)準确性。

另外,在今年雙十一中,天貓搜索底層第一次使用精确到更新粒度的SKU(Stock Keeping Unit)引擎代替之前的寶貝引擎,底層引擎索引量較之前翻了幾番。天貓從召回邏輯、前端的屬性展示、篩選以及搜索結果頁到詳情頁的聯動,向用戶提供了精确度更高(gāo)、更細緻的搜索購物體(tǐ)驗。對于标類産品,基于SKU引擎的搜索導購縮短(duǎn)了用戶的搜索購物路徑,比如搜索iPhone 5s後,SKU引擎會(huì)顯示對應的銷售屬性,方便用戶選擇。此外在SKU引擎的基礎上(shàng),天貓還(hái)實現了用戶的尺碼個(gè)性化,在包含确定尺碼信息的類目中,如鞋、文胸,天貓可(kě)以匹配用戶的尺碼個(gè)性化信息,将适合的商品優先展示給用戶。InfoQ會(huì)在後續文章中與相關技(jì)術(shù)專家(jiā)剖析sku引擎的設計(jì)思路與實現,敬請(qǐng)期待。