Java架構(gòu)師的推薦系統(tǒng)架構(gòu)詳解枫夺,程序員必學(xué)!
對(duì)于推薦系統(tǒng)绘闷,大家應(yīng)該不陌生橡庞。可以說(shuō)現(xiàn)在已經(jīng)隨處可以看到它的身影簸喂。比如你瀏覽網(wǎng)頁(yè)時(shí)毙死,如在京東上購(gòu)物,對(duì)應(yīng)頁(yè)面會(huì)根據(jù)你的瀏覽內(nèi)容給你推薦諸多類似功能的商品喻鳄。頁(yè)面上的看了又看以及猜你喜歡扼倘,這2個(gè)功能背后都是大數(shù)據(jù)的推薦系統(tǒng)做支持。以及你看今日頭條時(shí)除呵,你會(huì)發(fā)現(xiàn)再菊,系統(tǒng)不斷動(dòng)態(tài)展現(xiàn)你喜歡的內(nèi)容,這也是根據(jù)大數(shù)據(jù)而做的推薦內(nèi)容颜曾。尤其現(xiàn)在倡導(dǎo)千人千面的app應(yīng)用中纠拔,每個(gè)人瀏覽的內(nèi)容都是根據(jù)個(gè)人的興趣愛(ài)好系統(tǒng)自動(dòng)推薦,其背后都是整個(gè)推薦系統(tǒng)的作用泛豪。當(dāng)然稠诲,在推薦系統(tǒng)里面會(huì)涉及到算法等等內(nèi)容侦鹏,這里不對(duì)算法進(jìn)行介紹,只對(duì)推薦系統(tǒng)中涉及到的方方面面內(nèi)容的架構(gòu)進(jìn)行說(shuō)明臀叙。
如下介紹會(huì)涉及到諸多知識(shí)點(diǎn)略水,這里不做擴(kuò)展,后續(xù)會(huì)主鍵更新相關(guān)內(nèi)容的文章劝萤。
整個(gè)推薦系統(tǒng)可以用如下圖內(nèi)容展示:
如圖所示:
推薦系統(tǒng)中主要分為2大塊內(nèi)容:
根據(jù)操作日志進(jìn)行篩選過(guò)濾提取相關(guān)有用信息得到符合既定模型的內(nèi)容渊涝,這部分稱之為離線數(shù)據(jù)分析。因?yàn)槎际遣僮魅罩敬蚕樱且酝鶜v史操作跨释,離線數(shù)據(jù)的缺點(diǎn)之一就是缺乏失效性,對(duì)應(yīng)得出的內(nèi)容都是以前歷史得到的厌处,這造成的問(wèn)題很可能是推薦系統(tǒng)展示內(nèi)容不符合人的興趣關(guān)注點(diǎn)鳖谈。這就引出了第二個(gè)類內(nèi)容:系統(tǒng)會(huì)采集實(shí)時(shí)的流數(shù)據(jù)進(jìn)行實(shí)時(shí)的分析篩選,這部分叫做實(shí)時(shí)流處理嘱蛋。
綜上:離線數(shù)據(jù)分析以及實(shí)時(shí)流處理是推薦系統(tǒng)的2個(gè)核心模塊蚯姆。當(dāng)然,其背后洒敏,涉及算法龄恋,機(jī)器學(xué)習(xí)等等內(nèi)容。到頁(yè)面展現(xiàn)前凶伙,還可以根據(jù)需求在推薦內(nèi)容上插入指定需要展現(xiàn)的內(nèi)容郭毕。
【1】離線數(shù)據(jù)分析
這部分系統(tǒng)主要采集服務(wù)器上的日志內(nèi)容,因需配合實(shí)施流的處理函荣,這里需要先放在kafka中显押,然后,這些日志統(tǒng)一被hdfs收集傻挂,然后通過(guò)mapreduce進(jìn)行關(guān)鍵字過(guò)濾乘碑,其一:這些內(nèi)容存儲(chǔ)HIVE倉(cāng)庫(kù)中,在通過(guò)ETL對(duì)數(shù)據(jù)內(nèi)容進(jìn)行抽取編輯金拒,其二兽肤,這些內(nèi)容也可以交給機(jī)器學(xué)習(xí)等,推薦相關(guān)內(nèi)容绪抛。然后资铡,在導(dǎo)出到db中,如MySQL中幢码,然后通過(guò)推薦引擎編寫(xiě)應(yīng)用邏輯笤休,在db中數(shù)據(jù)進(jìn)行對(duì)應(yīng)需求操作,從而展現(xiàn)在頁(yè)面上症副。
【2】實(shí)時(shí)流處理
通過(guò)kafka中采集數(shù)據(jù)店雅,系統(tǒng)可以統(tǒng)計(jì)出當(dāng)前最新的動(dòng)態(tài)政基,將這些動(dòng)態(tài)也插入DB中。
綜上底洗,大概是推薦系統(tǒng)通用的架構(gòu)說(shuō)明腋么。
專注于Java架構(gòu)師技術(shù)分享,撩我免費(fèi)送Java全套架構(gòu)師晉級(jí)資料
(Java架構(gòu)師交流企*-**-*鵝*-*裙*-*:445*-**-*820*-**-*908)
???6?.??