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