搜索前端技術概述

搜索在線系統分爲三個部分,從用戶發起檢索請求後,歷經web前端、檢索前端和檢索後端。本文主要介紹檢索前端的技術架構和關注點。

爲了儘量排除筆者所在公司具體技術的相關名詞,下文對各個檢索前端模塊進行了抽象,下圖是檢索前端模塊示意圖。

圖片描述

Web前端除了FE相關工作之外,還包括以下幾項功能:

提供內容分發服務,並能夠通過速度探測服務選取用戶與IDC服務集羣之間的映射表;

基於LVS網關,提供負載均衡、流量控制、防攻擊等能力;

機房級別的流量調度,提供在機房故障情況下,能夠快速將流量切走。

在檢索前端架構中,主模塊可以分解爲接入、渲染和服務調度模塊。

接入模塊常用apache、nginx等作爲反向代理服務,當前隨着nginx高性能高併發特點,採用nginx作爲接入模塊成爲主流。接入模塊中嵌入的第三方模塊,可以提供負載均衡(query簽名+熱詞打散)、惡意流量打壓及降級等功能。

渲染模塊主要服務請求解析及頁面渲染工作,這裏涉及前端模板的開發。

服務調度模塊首要工作是確定用戶請求需要訪問的多服務後端,而決策的依據是分詞糾錯模塊,在該階段,分詞糾錯模塊提供需求激發功能:確定用戶請求後端的類型;提供糾錯功能,對用戶query進行糾錯處理。這裏的其他服務指的是一些特有的模塊,比如獲取用戶歷史展現數據、歷史行爲數據及用戶個性化數據等。

服務調度模塊在完成需求激發後,請求後端服務,諸如自然結果、廣告、特型結果服務後端等。

渲染模塊和服務調度模塊中都存在策略框架,對後端召回的結果進行策略微調、merge等操作,這裏由策略RD負責。

其他後端服務包括廣告,互聯網變現的最大來源。此外,包括特型結果、垂類等,比如百度的阿拉丁、哥倫布等項目。

檢索後端模塊將單獨做系列技術文章,在此不表。

檢索在線系統中存在多種類型的緩存模塊,在接入模塊、服務調度模塊都有緩存,緩存從功能上包括容災cache、結果cache,從部署上可分爲本地cache、遠程cache等。緩存除了容災功能外,主要提供優化請求響應時間的功能。

除以上描述之內容,檢索在線系統中還包括諸如轉碼、摘要處理等服務,再次不表。但要說明的是:轉碼是wise端的產物,站長是否希望被轉碼,轉碼後的效果是否更利於用戶體驗,可以探討。

作爲架構RD,主要工作除了系統、模塊架構重構和優化外,需要關注速度、穩定性、性能三個方面的指標。穩定性直接影響線上服務可用性,速度優化提高服務平均響應時間,性能提升能夠節省服務器資源,概括來說,目標都是爲了提供用戶體驗。

idea:

檢索前端可以創建一條異步通路,異步通路可以通過將用戶歷史展現數據、點擊數據、行爲數據進行整合,在用戶檢索結束後,由異步請求通路攜帶用戶歷史數據請求後端服務,從而根據用戶歷史數據開發策略優化結果,提高用戶體驗。這裏主要利用了移動互聯網時代,手機首屏展現小,隱藏區域可以做的事情給我們更多的啓發和創意。

再舉個例子,比如用戶語音搜索北京天氣,那麼搜索引擎就會返回北京天氣,如果用戶這時又想看看上海的天氣,口語化的習慣是上海呢?如果沒有用戶歷史數據的支持,上海呢的歧義太大,搜索引擎此刻一定是蒙逼狀態。

圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章