久草中文在线观看_久久精品中文字幕一区_亚洲日本欧美日韩中文字幕_熟妇人妻无乱码中文字幕真矢织江

或者

電商搜索引擎的架構(gòu)設(shè)計(jì)和性能優(yōu)化

作者:Promise.(承諾) 瀏覽:190 發(fā)布時(shí)間:2017-07-14
分享 評(píng)論 0

  電商搜索引擎的特點(diǎn)


  眾所周知,標(biāo)準(zhǔn)的搜索引擎主要分成三個(gè)大的部分,第一步是爬蟲系統(tǒng),第二步是數(shù)據(jù)分析,第三步才是檢索結(jié)果。


  首先,電商的搜索引擎并沒有爬蟲系統(tǒng),因?yàn)樗械臄?shù)據(jù)都是結(jié)構(gòu)化的,一般都是微軟的數(shù)據(jù)庫(kù)或者 Oracle 的數(shù)據(jù)庫(kù),所以不用像百度一樣用「爬蟲」去不斷去別的網(wǎng)站找內(nèi)容,當(dāng)然,電商其實(shí)也有自己的「爬蟲」系統(tǒng),一般都是抓取友商的價(jià)格,再對(duì)自己進(jìn)行調(diào)整。


  第二點(diǎn),就是電商搜索引擎的過濾功能其實(shí)比搜索功能要常用。甚至大于搜索本身。什么是過濾功能?一般我們網(wǎng)站買東西的時(shí)候,搜了一個(gè)關(guān)健詞,比如尿不濕,然后所有相關(guān)品牌或者其他分類的選擇就會(huì)呈現(xiàn)在我們面前。對(duì)百度而言,搜什么詞就是什么詞,如果是新聞的話,可能在時(shí)間上會(huì)有一個(gè)過濾的選項(xiàng)。


  第三點(diǎn),電商搜索引擎支持各種維度的排序,包括支持好評(píng)、銷量、評(píng)論、價(jià)格等屬性的排序。而且對(duì)數(shù)據(jù)的實(shí)時(shí)性的要求非常高。對(duì)一般的搜索引擎,只有非常重要的網(wǎng)站,比如一些重量級(jí)的門戶網(wǎng)站,百度的收錄是非常快的,但是對(duì)那些流量很小的網(wǎng)站,可能一個(gè)月才會(huì)爬一次。電商搜索對(duì)數(shù)據(jù)的實(shí)時(shí)性要求主要體現(xiàn)在價(jià)格和庫(kù)存兩個(gè)方面。


  電商搜索引擎另一個(gè)特點(diǎn)就是不能丟品,比如我們?cè)谔詫殹⑻熵堥_了個(gè)店鋪,然后好不容易搞了一次活動(dòng),但是卻搜不到了,這是無法忍受的。除此之外,電商搜索引擎與推薦系統(tǒng)和廣告系統(tǒng)是相互融合的,因?yàn)樗阉匾鎸?duì)流量的貢獻(xiàn)是最大的,所以大家都希望把廣告系統(tǒng)能跟其融合。當(dāng)然,還有一點(diǎn)非常重要,就是要保證絕對(duì)的高可用,而且不能宕機(jī)。


  電商搜索引擎的架構(gòu)


  因?yàn)殡娚趟阉饕话愕乃阉饕鎱^(qū)別很大,所以在架構(gòu)的設(shè)計(jì)上也獨(dú)具特色。


  首先,搜索引擎的實(shí)現(xiàn)方式有很多種,有谷歌、百度、搜狗這種非常大的公司,也有京東、淘寶、當(dāng)當(dāng)這樣的電商搜索引擎,很多中小型的電商可能更喜歡用一個(gè)開源的搜索引擎。所以總的來說,主要包括以下這幾種方式:


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化第一種是「Lucene+自己封裝」,只用來做檢索,然后封裝,后面所有的 ES,這兩個(gè)是完整的解決方案,而且包括索引所有的東西,只需要部署好業(yè)務(wù)邏輯,然后查找結(jié)果就可以了。


  第二種就是 Solr,這是一個(gè)高性能,采用 Java5 開發(fā),基于 Lucene 的全文搜索服務(wù)器。同時(shí)對(duì)其進(jìn)行了擴(kuò)展,提供了比 Lucene 更為豐富的查詢語言,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對(duì)查詢性能進(jìn)行了優(yōu)化,并且提供了一個(gè)完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。


  第三種是 ElasticSearch,這是一個(gè)基于 Lucene 的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 開發(fā)的,并作為 Apache 許可條款下的開放源碼發(fā)布,目前使用的也非常多。


  這里提一下,當(dāng)當(dāng)?shù)乃阉饕媸亲约簩?shí)現(xiàn)的,。現(xiàn)在,新興的互聯(lián)網(wǎng)公司大部分都是使用第一種或者第二種,數(shù)據(jù)量比較大的一般采用第三種。


  電商搜索引擎標(biāo)配模塊


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化接下來我想講一下,如果我們自己做一個(gè)搜索引擎的話需要實(shí)現(xiàn)哪些功能(上圖是電商搜索引擎的標(biāo)準(zhǔn)模塊),其實(shí)不止是電商搜索引擎,除了通搜的搜索引擎,其他的搜索引擎也是使用這樣的標(biāo)配。


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化對(duì)檢索模塊而言,首先是對(duì)用戶的意圖進(jìn)行分析,根據(jù)用戶的搜索詞來進(jìn)行純算法的實(shí)現(xiàn)。比如用戶的搜索詞是「黑包包」,其實(shí)用戶的本意就是買一個(gè)黑色的包,但是這個(gè)「包」可以跟別的詞組合在一起,甚至在搜索結(jié)果中會(huì)出現(xiàn)「包子」。所以,這就需要 query 分析系統(tǒng)來做,告訴檢索系統(tǒng),你需要主要在服裝鞋帽中的分類去找,而不是生鮮食品類。


  設(shè)計(jì)到技術(shù)層面,當(dāng)當(dāng)網(wǎng)使用的是 C++。如果構(gòu)建一個(gè)性能好的系統(tǒng),一些老一點(diǎn)的公司,大家都是在使用 C++ 或者是 C 語言。不止是當(dāng)當(dāng)網(wǎng),其實(shí)很多公司都是使用的 C 或者 C++ 實(shí)現(xiàn)的搜索引擎。


  數(shù)據(jù)更新模塊


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化第二個(gè)模塊就是數(shù)據(jù)更新模塊,該模塊負(fù)責(zé)生成索引。而數(shù)據(jù)中心模塊主要做的事情,就是將原始的結(jié)構(gòu)化數(shù)據(jù),變成一個(gè)可供檢索系統(tǒng)使用的搜索數(shù)據(jù)庫(kù)。當(dāng)然,數(shù)據(jù)更新模塊和檢索模塊是分開還是合并呢?其實(shí)從本質(zhì)上講,都是一堆代碼,完全可以寫在一個(gè)進(jìn)程里。當(dāng)然,也可以分開,通過網(wǎng)絡(luò)往外輸入,各自都有道理。第一種是簡(jiǎn)單粗暴型的,如果是普通電商,像生鮮電商,數(shù)據(jù)量不大,實(shí)時(shí)性、季節(jié)性很強(qiáng),就可以把兩個(gè)系統(tǒng)用一個(gè)進(jìn)程來完成。但是如果到了百萬、千萬甚至上億級(jí)別的話,就不可能部在一臺(tái)機(jī)器上了。


  上圖就是當(dāng)兩個(gè)系統(tǒng)合并在一起的時(shí)候,紅色部分就是檢索系統(tǒng),黃色部分是上游產(chǎn)生數(shù)據(jù)的系統(tǒng),如果是淘寶的話,對(duì)接就是淘寶的商戶,當(dāng)當(dāng)網(wǎng)對(duì)接是市場(chǎng)部的人員,他們將數(shù)據(jù)錄入系統(tǒng),推到數(shù)據(jù)庫(kù),然后向下進(jìn)行傳送,最終建立一個(gè)索引。


  上圖中的藍(lán)色部分就是業(yè)務(wù)邏輯,因?yàn)殡娚痰乃阉饕鏄I(yè)務(wù)需求量非常高,尤其是現(xiàn)在大家都喜歡用手機(jī)進(jìn)行購(gòu)物,像手機(jī)專享價(jià)就是一個(gè)新的業(yè)務(wù),這也意味著需要一個(gè)專用的模塊來處理這些商用的邏輯。


  此外,就是用戶行為的分析,我們搜集到的日志還有其他相關(guān)的數(shù)據(jù)都會(huì)存到 Hadoop 集群上去,通過離線計(jì)算,然后傳給商業(yè)模塊或者排序模塊進(jìn)行排序和打分,并提供給用戶更好的使用體驗(yàn)。


  出問題是不可避免的!如何解決?


  雖然整理來看,設(shè)計(jì)的思路是非常合理的,但是還是會(huì)出現(xiàn)問題。一般而言,一個(gè)成熟的電商搜索系統(tǒng),它的問題都很集中,要這幾種情況:首先就是 Bug,當(dāng)然這是所有系統(tǒng)都會(huì)遇到的問題;第二個(gè)就是并發(fā),但是搜索系統(tǒng)是沒辦法進(jìn)行分庫(kù)分表,所以能做的就是索引切分;最后一點(diǎn)就是監(jiān)控,包括問題追蹤、日志系統(tǒng)和監(jiān)控系統(tǒng),那么為了解決這些問題,我們應(yīng)該怎么做?


  首先,針對(duì) Bug 問題,只能靠自動(dòng)化運(yùn)維去解決(這里也推薦使用 OneAPM 工具);第二個(gè)就是高并發(fā)的問題,目前主要是靠緩存和橫向擴(kuò)展。而緩存和橫向擴(kuò)展怎么應(yīng)用到系統(tǒng)中去,這個(gè)很關(guān)鍵。很多人也說可以換一種語言,比如講 Python 換成 C++,但實(shí)際情況下,換語言并不能解決并發(fā)的問題,好的數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)比換一種語言更能提高性能,所以一般解決高并發(fā)問題的也就是緩存和橫向擴(kuò)展。


  第三個(gè)就是使用用 FLUME 日志系統(tǒng)(Flume 是 Cloudera 提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume 支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume 提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力)。其實(shí),F(xiàn)lume 會(huì)把集群上每一個(gè)節(jié)點(diǎn)的日志全都收集起來,這樣做起來有兩個(gè)好處,第一是現(xiàn)場(chǎng)出問題,可以先回滾出 Bug,然后進(jìn)行查詢。第二個(gè)就是對(duì)日志進(jìn)行搜集,然后做用戶行為分析,查看用戶點(diǎn)擊了多少次,從何處導(dǎo)入的流量等等,從而便于更好的進(jìn)行排序。


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化然后講一下緩存的問題。一般搜索的緩存可能分為兩級(jí)緩存,據(jù)我觀察,像搜狗可能是使用頁面級(jí)緩存,而百度可能用的是索引級(jí)的緩存。比如在搜狗搜索一個(gè)詞,開始時(shí)可能需要 40 毫秒,然后再搜的話,就可能一下子降到 1 毫秒。這就是頁面級(jí)緩存。而百度可能第一次搜索用了 40 毫秒,第二次就是 25 毫秒,它并不是把頁面給緩存下來,而是將索引的倒排鏈緩存,級(jí)別其實(shí)是不一樣的。


  電商搜索很多使用的是兩級(jí)緩存,對(duì)于特別熱門的詞匯,我們可以做頁面級(jí)緩存,而頁面級(jí)緩存的時(shí)間只有 15 秒到 20 秒。但是像價(jià)格這樣的東西不能緩存,需要前臺(tái)頁面去反拉價(jià)格。第二級(jí)就是索引級(jí)別的緩存,實(shí)際上也是自建的一個(gè)緩存系統(tǒng)。另外,排序也有緩存,因?yàn)榕判虻慕Y(jié)果不太會(huì)有太大的變化。


  電商搜索引擎 搜索引擎優(yōu)化 電商網(wǎng)站優(yōu)化 性能優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化上圖是當(dāng)當(dāng)?shù)乃阉骷軜?gòu),這里有一個(gè)集群是做數(shù)據(jù)分析的,上面?zhèn)錆M了數(shù)據(jù)。


  首先,集群之間采用什么樣的通訊方式?我們主要使用 ZMQ(這是一個(gè)簡(jiǎn)單好用的傳輸層,像框架一樣的一個(gè) socket library,使得 Socket 編程更加簡(jiǎn)單、簡(jiǎn)潔和性能更高。是一個(gè)消息處理隊(duì)列庫(kù),可在多個(gè)線程、內(nèi)核和主機(jī)盒之間彈性伸縮)。原因其實(shí)只有一個(gè),就是快,非常快,比較適合數(shù)據(jù)量比較大的業(yè)務(wù)。


  如何避免冷啟動(dòng)?


  最后就是冷啟動(dòng)的問題,這個(gè)問題是很多電商網(wǎng)站都很頭疼的問題。尤其是隨著電商網(wǎng)站的商品數(shù)量達(dá)到一定量級(jí)的時(shí)候,比如已經(jīng)上億了,像淘寶、天貓的話應(yīng)該更多。如果重建了一次索引需要啟動(dòng),或者新上線了一個(gè)業(yè)務(wù)模塊,需要重啟系統(tǒng),是很麻煩的。


  當(dāng)然,當(dāng)集群大了以后有很多方法,比如分開啟動(dòng)之類的,至于技術(shù)嘛,一般索引的加載都是使用 Lunix 標(biāo)準(zhǔn)的 MMAP(MMAP 將一個(gè)文件或者其它對(duì)象映射進(jìn)內(nèi)存。文件被映射到多個(gè)頁上,如果文件的大小不是所有頁的大小之和,最后一個(gè)頁不被使用的空間將會(huì)清零。MMAP 在用戶空間映射調(diào)用系統(tǒng)中作用很大),這樣啟動(dòng)速度會(huì)很快,但是系統(tǒng)會(huì)有預(yù)熱時(shí)間,前面一些時(shí)間的查詢會(huì)比較慢如果數(shù)據(jù)量不是特別大的話,而且現(xiàn)在內(nèi)存也那么便宜,完全可以將數(shù)據(jù)一次性讀入內(nèi)存,因?yàn)?mmap 的操作畢竟性能沒有直接內(nèi)存來得快。


  第三種的話,就是盡量減少做全量數(shù)據(jù)的頻率,避免整個(gè)系統(tǒng)的重啟,這需要定期做一下索引的優(yōu)化,把沒用的索引干掉。


  如果是新上了一個(gè)業(yè)務(wù)模塊需要重啟集群,這樣的事情最好不要發(fā)生,這就是架構(gòu)有問題了,將業(yè)務(wù)模塊變成外部的模塊或者插件進(jìn)行上線才是正確的,不然每上線一個(gè)模塊需要重啟集群,這誰都受不了。


  


久草中文在线观看_久久精品中文字幕一区_亚洲日本欧美日韩中文字幕_熟妇人妻无乱码中文字幕真矢织江
<code id="6mcsu"></code>
<li id="6mcsu"></li>
<li id="6mcsu"><dl id="6mcsu"></dl></li>
  • <code id="6mcsu"><tr id="6mcsu"></tr></code>
    精品一区二区免费在线观看| 国内精品伊人久久久久av一坑 | 5858s免费视频成人| 视频一区在线播放| 欧美va亚洲va| 成人小视频在线| 亚洲综合999| 91精品国产综合久久精品图片| 九色综合狠狠综合久久| 国产三级一区二区| 在线观看亚洲精品视频| 三级在线观看一区二区| 精品国产免费人成电影在线观看四季 | 精品无码三级在线观看视频| 日本一区免费视频| 日本韩国欧美三级| 久久精品国产精品青草| 国产精品妹子av| 欧美日韩成人激情| 国产精品一二三| 一区二区三区四区在线播放| 91精品在线观看入口| 国产精品综合一区二区| 伊人一区二区三区| 欧美mv日韩mv国产| 91老师国产黑色丝袜在线| 日韩黄色片在线观看| 欧美经典一区二区| 欧美视频一区在线| 国产福利一区在线观看| 亚洲电影在线播放| 国产色综合一区| 欧美区视频在线观看| 国产成人av资源| 婷婷综合另类小说色区| 中文字幕av一区二区三区免费看| 欧美日韩一区中文字幕| 国产.欧美.日韩| 日产精品久久久久久久性色| 亚洲欧美自拍偷拍| 精品国产制服丝袜高跟| 欧美性极品少妇| 高清成人在线观看| 日韩专区欧美专区| 中文字幕五月欧美| 精品国产免费一区二区三区四区| 91极品视觉盛宴| 国产精品1区2区| 日本特黄久久久高潮| 亚洲色图.com| 久久久久国产精品厨房| 91精品国产乱| 91国偷自产一区二区三区观看| 国产毛片精品国产一区二区三区| 亚洲国产毛片aaaaa无费看| 国产欧美日韩精品一区| 91麻豆精品久久久久蜜臀| 99久久精品国产网站| 精品一区二区三区免费毛片爱| 一级特黄大欧美久久久| 国产精品灌醉下药二区| 久久女同性恋中文字幕| 91麻豆精品国产自产在线| 91丨porny丨国产| 国产91高潮流白浆在线麻豆| 久久国产夜色精品鲁鲁99| 亚洲福利一二三区| 亚洲欧美一区二区三区极速播放| 国产日韩欧美麻豆| 2023国产精品| 欧美不卡在线视频| 在线成人高清不卡| 欧美性生活大片视频| 97精品视频在线观看自产线路二| 国产精品一级二级三级| 久久av资源站| 奇米影视一区二区三区小说| 午夜影院久久久| 夜夜嗨av一区二区三区网页| 成人免费在线观看入口| 中文字幕免费在线观看视频一区| 26uuu国产日韩综合| 精品久久久久久亚洲综合网| 91精品国模一区二区三区| 欧美性一级生活| 欧美天堂亚洲电影院在线播放| 色综合久久99| 一本一本大道香蕉久在线精品| jizz一区二区| av亚洲精华国产精华精华| 成人丝袜18视频在线观看| 高清不卡在线观看| 成人蜜臀av电影| 成人av在线一区二区三区| 成人午夜在线播放| a美女胸又www黄视频久久| 成人少妇影院yyyy| 成人av免费在线观看| 粉嫩嫩av羞羞动漫久久久| 顶级嫩模精品视频在线看| 成人性生交大片| av一区二区三区在线| 97久久精品人人做人人爽50路| av午夜一区麻豆| 91丨九色丨黑人外教| 色综合色综合色综合 | 欧美日韩色一区| 欧美色老头old∨ideo| 欧美日韩一区不卡| 欧美精品三级日韩久久| 日韩欧美在线综合网| 精品国产乱码久久| 久久久久9999亚洲精品| 日本一区二区视频在线观看| 国产精品成人在线观看 | 成人免费在线播放视频| 亚洲丝袜精品丝袜在线| 亚洲精品视频免费看| 亚洲大型综合色站| 美国av一区二区| 国产精品一区二区久久不卡| 成人亚洲精品久久久久软件| 91小宝寻花一区二区三区| 在线看不卡av| 欧美日韩中文另类| 日韩午夜激情av| 欧美精彩视频一区二区三区| 亚洲欧美成aⅴ人在线观看| 午夜在线电影亚洲一区| 久久99热99| 东方欧美亚洲色图在线| 日本国产一区二区| 欧美一区在线视频| 国产欧美综合在线观看第十页 | 亚洲123区在线观看| 捆绑调教美女网站视频一区| 高清不卡一区二区在线| 91久久奴性调教| 欧美大黄免费观看| 国产精品伦理在线| 亚洲国产精品一区二区尤物区| 奇米精品一区二区三区四区 | 亚洲欧美自拍偷拍色图| 亚洲www啪成人一区二区麻豆| 久久av资源站| av亚洲精华国产精华精| 欧美日韩国产高清一区二区 | 成人高清视频在线观看| 欧美三级一区二区| 精品sm在线观看| 亚洲色图视频网站| 日韩电影在线一区| 丁香亚洲综合激情啪啪综合| 欧美色老头old∨ideo| 国产午夜一区二区三区| 亚洲午夜成aⅴ人片| 国产一区二区三区高清播放| 91国产丝袜在线播放| 欧美精品一区二区三区一线天视频| 亚洲视频在线一区| 老司机精品视频在线| 色诱视频网站一区| 亚洲精品在线观看视频| 亚洲免费观看高清完整版在线观看| 麻豆精品在线看| 91免费国产视频网站| 日韩欧美国产一区二区三区| 亚洲欧美韩国综合色| 国产一区二区伦理片| 欧美日韩在线三级| 久久综合狠狠综合久久综合88 | 亚洲超碰精品一区二区| 国产白丝网站精品污在线入口| 欧美欧美欧美欧美| 国产精品久久久久永久免费观看 | 在线影院国内精品| 国产午夜精品久久| 视频一区欧美精品| 91香蕉视频在线| 久久新电视剧免费观看| 三级久久三级久久| 91丨porny丨中文| 国产日韩av一区| 秋霞成人午夜伦在线观看| 欧洲精品在线观看| 国产性色一区二区| 久久草av在线| 欧美日韩电影在线播放| 亚洲柠檬福利资源导航| 成人综合婷婷国产精品久久| 欧美成人激情免费网| 视频一区二区三区中文字幕| 色综合咪咪久久| 国产精品国产三级国产普通话蜜臀 | 337p亚洲精品色噜噜| 亚洲男人都懂的| 成人黄色综合网站| 国产色产综合色产在线视频| 久久不见久久见中文字幕免费| 欧美日韩高清在线|