搜索是不少用戶在天貓購物時的第一入口,搜索結果會根據銷量、庫存、人氣對商品進行排序,而商品的顯示順序每每會決定用戶的選擇,因此保證搜索結果的實時性和準確性很是重要。在電商系統中,特別是在「雙十一」這樣的高併發場景下,如何準確展現搜索結果顯得尤其重要。在今年的「雙十一」活動中,InfoQ有幸採訪到了阿里巴巴集團搜索引擎的三位負責人仁基、桂南和悾傅,與他們共同探討了搜索引擎背後的細節。如下內容根據本次採訪整理而成。前端
阿里巴巴的搜索引擎承擔着全集團的搜索業務,包括淘寶、天貓、1688等系統,對比傳統的搜索引擎,阿里集團的搜索引擎有一些比較大的突破性、創造性的工做。傳統的搜索引擎,只能夠作到離線全量、增量構建索引,而阿里的搜索引擎已是演變成爲一個可以作到離線、增量、實時三個等級的搜索引擎。電商平臺最大的一個特色就是短時高併發,像雙十一這樣的活動中,搜索引擎須要考慮如何讓流量發揮更大的價值。傳統的搜索引擎解決短時高併發的思路是添加緩存層以減小搜索引擎的訪問量,而這樣的解決方案,天貓以前也有使用,可是緩存會有延遲,實時搜索的需求根本沒法知足。因此爲了解決實時的問題,阿里的搜索引擎去掉了應用層和業務層的緩存,重點優化和提高引擎層的服務能力。爲了兼顧實時性和吞吐量,搜索引擎實現了全量、增量、實時三種更新通路。經過三種方式的靈活組合,在保證了海量數據按期全量更新的同時提供了秒級實時更新能力,避免了數據延遲,提高了用戶體驗。算法
從總體上來看,阿里搜索引擎的架構圖以下。從上到下,分別是應用層、業務層、搜索引擎層、離線處理層和DB層,應用層其實就是調用方,大的來看能夠分爲Web、App、Wap。業務層會針對相應的業務對搜索結果進行整理,如Android和iOS的搜索結果顯示是不同的。搜索引擎層有點相似傳統系統的搜索引擎,阿里巴巴的搜索引擎會在搜索的基礎上根據用戶習慣提供個性化的搜索結果。索引層主要包括全量索引和流式計算,全量索引其實就是一個基於Hadoop/HBase的離線集羣,而流式計算是阿里本身研發的一套系統。之因此沒有選用Storm,是由於在這一層中,光有計算是不夠的,還須要有數據的存儲(開源解決方案HBase)。若是使用Storm,接下來會面臨一個問題,Storm是一個集羣,HBase又會是一個集羣,這樣,Storm的Disk以及HBase的CPU其實都沒有充分利用到,因此阿里的方案是Hadoop Yarn與HBase混合部署,把兩個集羣合併在一塊兒,既能夠作大規模的數據處理,也能夠作流式計算,經過這樣的方式,能夠將離線和實時計算更好地融合。最底層的數據源層會把用戶、商品、交易信息同步到上層的HBase集羣中。緩存
Storm是一個無狀態的流式計算框架,而無狀態的流式計算體系,更適合作簡單的統計分析,好比針對成交維度或者點擊維度作計數。而阿里自研的流式計算框架iStream,已經再也不是簡單的、無狀態的流式計算概念。iStream藉助HBase集羣存儲用戶狀態,以完成一些相對複雜的模型的計算。同時模型的計算結果能夠經過相應的接口直接推送到上層的搜索引擎中,以服務每一條流量的排序變化。架構
在搜索引擎層,不只包括商品的搜索引擎,還會包括其它層面的服務(如架構圖所示)。商品搜索引擎中包含商品、店鋪、活動等維度的信息,而圖中的個性化服務旨在爲用戶提供個性化的搜索體驗,個性化服務會根據用戶的實時行爲反饋搜索結果。而QP(Query Planner)會對用戶的搜索請求進行分析(搜索詞、搜索場景、頁面)進一步個性化搜索服務。在搜索引擎層,經過這三個系統的互相配合爲上層的業務層提供個性化的搜索數據。併發
不一樣的業務對應的搜索排序結果不一樣,阿里搜索引擎中排序部分是經過相似鏈式處理的方式實現的,內部稱爲排序鏈。排序鏈是由不一樣的用戶特徵對應的算法插件組合而成,算法插件是單獨存在的,能夠根據具體狀況組合到不一樣業務的排序鏈中。目前在線上運行的排序鏈有幾十條,系統會根據不一樣的業務、用戶、場景、Query選擇不一樣的排序邏輯框架
而在雙十一這樣的高併發活動中,搜索引擎須要保證流量的合理分配,好比搜索結果中不能顯示售罄的商品。可是對於一些熱門商品,從庫存充足到售罄多是幾分鐘的時間。爲了保證搜索結果的實時性,阿里搜索引擎架構針對這樣的場景作了優化,去掉了不能感知業務變化的緩存(業務層),重點優化搜索引擎層的緩存。以商品售罄的場景爲例,當商品售罄時,業務系統會發送異步消息通知離線集羣,離線集羣經過流式計算將更新同步到引擎,而當引擎返回搜索結果時,會在緩存的基礎上對結果進行二次過濾,從而保證搜索結果的實時性和準確性。異步
另外,在今年雙十一中,天貓搜索底層第一次使用精確到更新粒度的SKU(Stock Keeping Unit)引擎代替以前的寶貝引擎,底層引擎索引量較以前翻了幾番。天貓從召回邏輯、前端的屬性展現、篩選以及搜索結果頁到詳情頁的聯動,向用戶提供了精確度更高、更細緻的搜索購物體驗。對於標類產品,基於SKU引擎的搜索導購縮短了用戶的搜索購物路徑,好比搜索iPhone 5s後,SKU引擎會顯示對應的銷售屬性,方便用戶選擇。此外在SKU引擎的基礎上,天貓還實現了用戶的尺碼個性化,在包含肯定尺碼信息的類目中,如鞋、文胸,天貓能夠匹配用戶的尺碼個性化信息,將適合的商品優先展現給用戶。InfoQ會在後續文章中與相關技術專家剖析sku引擎的設計思路與實現,敬請期待。高併發