從未降級的搜索技術
在搜索我經歷過全部的雙 11,12 年和 13 年這 2 次大促,GN 是開發總指揮,我是在禮臺上看各種新武器實彈表演。過去 6 年里,我們的引擎體系每年做到 100% 的性能提升,以淘系搜索為例,從最初 3000 臺機器翻倍到現在區區 6000 臺,但搜索服務卻從 6 千 qps 增長了 40 倍到現在的 32 萬 qps,同時還填補了算法欲壑(算法數據占用內存從最初的 10% 到了現在的 50%),轉化率持續攀升,目前大搜索 GMV 已經是全網的主體了。搜索工程師的雙 11 歷來是實彈各種新武器的大機遇,而常規的技術保障已經成為踩在腳下的底線。實施任何一種降級預案都被我們視為恥辱,因為預案都是以傷害用戶體驗為代價的。在技術保障部雙 11 總指揮群里此起彼伏的降級通告里面,從來沒有過搜索的身影!
14 年雙 11 大促總指揮是 YF,搜索焦點集中在要檢閱的 5 件新武器上:
- 天貓售罄率預估,商品加購和交易后及時預測它的售罄時間,通過降權或者加權提升搜索結果頁每一個位置的價值,搜索 GMV 可提升 10%。
- 天貓 SKU 搜索,顏色尺碼等 sku 屬性參與檢索。引擎平臺實現了子文檔檢索功能,將原來集群拓展五倍規模才能做到的天貓 SKU 在原有基礎上增加 60% 即可實現。
- Hippo 引擎在線管理系統,機群變為可靈活流動的三維架構,第一維度是根據商品質量或類目劃分子機群,下面才是傳統的二維行列架構,這帶來的好處是查詢性能的巨幅優化。
- 離線集群 HBase 升級 0.98,近 700 臺機器的離線集群上各業務線分頭開發累積導致集群效率底下,支持售罄率預估也要求我們把調優經驗更厚實的 0.98 版本升級上去。
- 搜索分層優化 GMV,借助 Hippo 系統主搜根據商品質量劃分子機群然后在業務服務層聚合,搜索 GMV 可提升6%,整體性能大幅提升 80%。
10/17,離雙 11 還有段日子,下午我常規心血來潮找 XD 了解 Hippo 的進展,結果卻觸動了我的神經,我們都希望看到 Hippo 在雙 11 上線主搜和天貓實戰檢驗,但 GD 堅持把統一到 A8 機器的運維工作一并完成(稍顯保守),因為這需要補充近 300 臺 A8 的機器,而機器已經拖延幾個星期了,本該 9 月底完成上線的 Hippo 到了 10/17 看來機會渺茫,引擎體系奔向世界級的路上焉能貽誤戰機!更有甚者,售罄率預估與天貓 SKU 搜索這兩個業務項目都依賴 Hippo,業務項目要是延誤可是要掉腦袋的,念及此處我沒有心情觀禮了。要知道,主搜天貓加上這些 A8 升級后,還要退出來低配機器給其它搜索服務擴容,上下游一系列連鎖依賴都嗷嗷待哺需要時間呀。緊急狀態,不得不對搜索工程各相關團隊發起動員了。 Hippo 必須不能夠等待 A8 的到來盡快上線檢驗,要打破常規的水平分工來一場混戰了。我直接請 YL 擔任緊急狀態下引擎端的負責人,飛行時更換引擎是我們起步時代的殺手锏,今天必須成為我們的底線。
10/27 日,緊急狀態的第 10 天,ZY 和 GD 在各應用集群間輾轉騰挪,終于完成了 Hippo 上線和天貓 SKU 搜索上線;插件小組完成了售罄率預估上線,把主搜性能提升了 30%;LT 和 XY 在 QA 小組的陪伴下解決了各組件的 core 與慢,CS 也分批交付了 A8 機器。淘寶搜索、天貓搜索、店鋪內搜索、店鋪搜索共四個核心應用的淘系搜索達到了 40 萬 qps 服務能力。這火熱的十天,恰好也是 CS 和 GD 的陪產假。
現在我是不是可以高枕無憂重上觀禮臺了呢?此次要實彈的新武器只有 Hippo 和天貓 SKU 搜索踏實了,而售罄率預估所需離線集群 HBase 升級后鮮有指標超越升級以前,全鏈路壓測未能成功。更為甚者,TM 根據 10 月份無線端流量情況,把對搜索的要求從 10 萬 qps 提升到了 15 萬 qps,也就是說現有的 40 萬 qps 整體能力必須提升到 45 萬 qps!而多出來的 5 萬 qps 要求又只能實打實落在最大的主搜索集群上,目前的優化手段已經用盡,降級是容易的也是恥辱的,怎么辦?崩潰前奏,我冷汗直冒,盡管現在是 YF 擔任總指揮。
搜索分層優化 GMV 成了救命稻草,盡管已經在無線全量上線并拿到了大部分性能成果,已經體在現有 40 萬 qps 的服務能力里。但在 PC 端上線卻因為對廣告的負面影響而步伐遲緩,這里還有 100 臺機器可以省下來。此外協同搜索是主搜的輔助引擎,這有 200 臺機器不得已可以下線。分層優化 GMV 和協同檢索一上一下恰好可以抵消 GMV 損失,同時又能節省 300 多臺機器。緊急關頭,老板給我們亮了黃燈,暫時下掉代表搜索體系技術一大進步的協同關系搜索是我此次最大的遺憾。
11/7 日,緊急狀態的第 20 天,大促準備的戰場收尾之后,全淘系搜索在線服務規模達到了 2500 臺機器,搜索服務能力推高到至 45 萬 qps,此外還有推薦服務能力到了 12 萬 qps,以及 4 萬 qps 的 AE 引擎服務能力。已成為集團基礎設施的 opensearch 在那個周末還有個插曲,HT 應淘點點要求緊急把集群擴容到 4 萬 qps。至此萬事俱備,歡度周末之后我準備上觀禮臺了。
11/10 日 21 點到 11 日晚 12 點共 27 個小時,5 種新武器實彈表演漸入佳境,事后回顧流量高峰在最初的 4 小時就已經到來了,盡管 11 日白天來勢洶洶比前一天高出一倍不止,但到了晚上漲幅回落基本和 10 日持平了。觀禮過程最為驚險的在 11 號上午 8 點到 12 點這段期間,對 IC 銷量字段的更新度預估不足,導致天貓引擎有約半小時的延遲,售罄率預估也無法開啟;無線推薦因為上游降級而流量大損峰值只有 4 萬 qps(上限 12 萬 qps)。在這 27 個小時里,搜索峰值是 32 萬 qps(上限 45 萬 qps),其中最大的份額來自手淘搜索峰值 10 萬 qps(上限 15 萬 qps)。手淘 UV 只到了理想目標的 60%,真要是滿負荷過來的話,手淘搜索峰值會突破上限 15 萬 qps 而達到 16.7 萬,那么等待我們的唯有恥辱降級一途!售罄率預估當天開啟 12 個小時,對成交轉化提升達到了 10 個百分點。Opensearch 的服務大大低于預期只跑到了 7 千 qps。最后 AE 的大促意外交出了完美的業務答卷,同時引擎后臺服務真的一度達到了 3.2 萬 qps(上限 4 萬 qps)。
迄今為止的每一次大促搜索在線服務都沒有任何形式的降級,無論是天貓還是淘寶還是 SC/AE 還是 1688,這一次游走在天堂和地獄之間,我們更清醒的認識到,技術進步永無止境!