W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
主題
58同城推薦系統(tǒng)架構(gòu)設計與實現(xiàn)
推薦系統(tǒng)是一個微龐大的工程、算法與業(yè)務綜合的系統(tǒng),其主要分為三大子系統(tǒng):
1)線下推薦子系統(tǒng);
2)線上推薦子系統(tǒng);
3)效果評估子系統(tǒng);
后文將重點討論以上三大子系統(tǒng)的設計與實現(xiàn)。
線下推薦子系統(tǒng)又主要分為線下挖掘模塊、數(shù)據(jù)管理工具兩大部分。
線下挖掘模塊
線下挖掘模塊,是各類線下挖掘算法實施的核心,它讀取各種數(shù)據(jù)源,運用各種算法實施線下數(shù)據(jù)挖掘,產(chǎn)出初步的挖掘結(jié)果,并將挖掘結(jié)果以一定格式保存下來。典型的,實施這些挖掘策略的是一些跑在hadoop平臺上的job,并行實施策略,并將挖掘結(jié)果保存到hadoop上。
數(shù)據(jù)管理工具
數(shù)據(jù)管理工具,即DataMgrTools,它是一個工具(或者服務),它能夠接受一些管理命令,讀取某些特定格式的線下數(shù)據(jù),將這些數(shù)據(jù)實時或者周期性的打到線上的redis或者內(nèi)存中,供線上服務讀取。
數(shù)據(jù)管理工具是一個與業(yè)務無關(guān)的通用工具,它需要支持多種特定格式數(shù)據(jù)的上傳,因為線下挖掘模塊產(chǎn)出的數(shù)據(jù)可能存儲在文件里,HDFS上,數(shù)據(jù)庫里,甚至是特定二進制數(shù)據(jù)。
該工具的實現(xiàn)要點是:定義好線下數(shù)據(jù)格式,線上數(shù)據(jù)格式,通過上下游API做數(shù)據(jù)的遷移和轉(zhuǎn)換。
線上推薦子系統(tǒng)主要分為展示服務、分流服務、推薦內(nèi)核、策略module服務等幾個部分。
展示服務
展示服務,或者說是接入服務,它是整個推薦系統(tǒng)線上部分的入口,即整個推薦系統(tǒng)的接入層,它向上游提供接口,供上游業(yè)務方調(diào)用。
展示服務是無狀態(tài)的服務(線上子系統(tǒng)各個服務都是無狀態(tài)的服務),可以任意水平擴展,該服務的實現(xiàn)要點是:定義好通用的接口格式。
分流服務
分流服務,它是推薦系統(tǒng)中一個非常有特色也非常重要的一個服務,它的作用是將上游過來的請求,按照不同的策略,以不同的比例,分流到不同的推薦算法實驗平臺(也就是下游的推薦內(nèi)核)中去。
分流服務如何判斷上游過來的一個請求分配到那個推薦算法實驗平臺呢?答案是通過策略和配置。從架構(gòu)圖中可以看到,幾乎所有的服務都需要讀取數(shù)據(jù)(data)和配置(conf),這些data可能是在線的動態(tài)變化的數(shù)據(jù)(例如:從redis中讀取的數(shù)據(jù)),亦可能是相對靜態(tài)的數(shù)據(jù)(例如:城市列表),conf比較好理解,即一些配置(例如:所有請求80%流量必須走A算法實驗平臺)。通過這些策略和配置,配合請求帶過來的參數(shù),分流服務計算出流量分配到哪個實驗平臺。
該服務的實現(xiàn)要點是:實現(xiàn)通用的支持與或非關(guān)系的可配置的分流規(guī)則,與下游實驗平臺定義好通用的接口以實現(xiàn)將流量按需打往不同的實驗平臺。
推薦內(nèi)核
推薦內(nèi)核,是各類線上推薦算法實施的核心,它其實只是一個通用的實驗平臺容器,每個推薦服務內(nèi)部可能跑的是不同類型的推薦算法。
雖然推薦服務中跑著不同的推薦算法,但每個算法的實施步驟都是相同的,都需要經(jīng)過:
(1)預處理;
(2)預分析;
(3)去重過濾;
(4)排序;
(5)推薦解釋;
等五個步驟,每個步驟都可能存在多種不同的算法,不同的模型,各個步驟中的一種算法組合起來,完成一個完整的流程,構(gòu)成一個“推薦算法實驗平臺”。
對于上述每個不同步驟中的不同模型,可能需要訪問不同的外部module服務,例如:
推薦解釋步驟,可能有兩個模型,第一個模型在推薦解釋階段可能需要訪問“解釋-module1-服務”,第二個模型在推薦解釋階段可能需要訪問“解釋-module2-服務”,這些不同模型訪問不同業(yè)務的需求,在架構(gòu)層面都需要支持。
該服務的實現(xiàn)要點是:在一個推薦服務框架中跑多種策略,支持多個算法工程師在一個框架內(nèi)并行開發(fā)/實驗多個推薦算法,配合分流服務實現(xiàn)推薦算法實驗平臺。
策略服務
策略服務,又叫策略module服務,它實現(xiàn)了一個個推薦內(nèi)核下游的推薦module。在推薦內(nèi)核執(zhí)行各個推薦步驟時,每個步驟中都可能存在不同的算法/策略,這些算法/和策略可能需要調(diào)用一些和策略綁定比較緊密的module服務,它們并不是通用服務,而是相對專有的服務。
例如:排序module服務,需要有一套方便,高效,可擴展的排序服務。
該服務的實現(xiàn)要點是:實現(xiàn)一個通用的服務框架,讓算法人員能夠快速的生成module服務,并將自己的需求在module中實現(xiàn),且能夠在算法實驗平臺方便的進行module服務的調(diào)用。
效果評估子系統(tǒng)又分為推薦服務調(diào)用端、瀏覽器上報端、實施效果分析端。
推薦服務調(diào)用端
調(diào)用推薦系統(tǒng)接口的58同城業(yè)務線,例如招聘業(yè)務線。
瀏覽器上報端
瀏覽器端js,調(diào)用招聘服務時,能夠在頁面展現(xiàn)出推薦系統(tǒng)中推薦出來的結(jié)果,并且能夠知道哪些推薦結(jié)果被點擊了,且會將這些被展示的與被點擊的信息進行上報。
實時效果分析端
瀏覽器js將被展示的推薦結(jié)果,與被點擊的推薦結(jié)果進行上報后,有一個實時效果觀察的平臺,第一時間得知上線后推薦算法/推薦策略的效果。
綜合前面章節(jié)所述,58同城推薦系統(tǒng)總體架構(gòu)圖如上。
推薦系統(tǒng)是一個工程、算法和業(yè)務的綜合性系統(tǒng),上線了推薦系統(tǒng),從此58同城正式進入了智能數(shù)據(jù)推薦的時代。
關(guān)于-58同城推薦業(yè)務
58同城是一個用戶與商戶共依的平臺,信息的推薦對58同城而言至關(guān)重要。以58同城的招聘業(yè)務線為例:在招聘用戶端,為用戶推薦更多很好的相關(guān)職位,能夠增強用戶的體驗,也增加了58同城的PV;在招聘商家端,為商戶推薦更多更好的相關(guān)簡歷,能夠增強商家的體驗,促進簡歷的下載量,從而增加58同城的收入。
推薦業(yè)務如此重要,在技術(shù)層面,如何設計推薦系統(tǒng)的架構(gòu),是本文重點討論的內(nèi)容。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: