Java生鮮電商平臺-電商搜索引擎架構設計與大數據平臺架構實踐(小程序/APP)

Java生鮮電商平臺-電商搜索引擎架構設計與大數據平臺架構實踐(小程序/APP)

說明:Java生鮮電商平臺-電商搜索引擎架構設計與大數據平臺架構實踐,本文主要是講解電商搜索引擎的設計以及大數據平臺架構實戰

    電商搜索引擎,是幫助顧客快速找到需要購買的商品的工具,衡量一個電商搜索引擎是   否成功的標準是,顧客在一連串的搜索行爲當中,是否越來越接近自己的真實需求。顧客越   快進入商品頁面去瀏覽商品,越表明搜索引擎推薦的搜索結果越精確。電商搜索引擎,是傳   統搜索引擎的一個垂直領域,爲了更好地學習搜索引擎的相關知識,我們首先要看一個完整   的搜索引擎的技術架構。

一個完整的搜索引擎技術框架,如圖 所示,搜索引擎的技術架構,分成 3 個部分

 

信息採集、建立索引庫、提供檢索服務,下面我們分別來探討這 3 部分內容。

信息採集, 在互聯網中發現、蒐集信息和數據。通常, 這個步驟是通過爬蟲

(Crawler/Spider)抓取網頁來實現的。每個獨立的搜索引擎都有自己的網頁抓取程序爬蟲。爬蟲 Spider 順着網頁中的超鏈接,從這個網站爬到另一個網站,通過超鏈接分析連續訪問抓取更多網頁。被抓取的網頁被稱之爲網頁快照。由於互聯網中超鏈接的應用很普遍,理論上,從一定範圍的網頁出發,就能蒐集到絕大多數的網頁。

建立索引庫,對收集到的信息進行提取和組織建立索引庫。搜索引擎抓到網頁後,還要   做大量的預處理工作,才能提供檢索服務。其中,最重要的就是提取關鍵詞,建立索引庫和   索引。根據應用場景的不同,其他可能的處理還包括去除重複網頁、分詞(中文)、判斷網   頁類型、分析超鏈接、計算網頁的重要度/豐富度等。

提供檢索服務,由檢索器根據用戶輸入的查詢關鍵字,提供檢索服務。接受到關鍵詞後,   系統在索引庫中快速檢出文檔,進行文檔與查詢的相關度評價,對將要輸出的結果進行排序,   並將查詢結果返回給用戶。通常,爲了用戶便於判斷,除了網頁標題和 URL 外,還會提供一段來自網頁的摘要及其他信息。

其實搜索已經是一項非常成熟的技術,這裏不打算展開討論了,只介紹幾個在搜索技術  架構上比較重要的技術點:分佈式索引、分佈式搜索。

分佈式索引,就是通過很多普通配置的硬件,同時進行索引建立的工作,最後進行索引  的合併操作。這樣處理的好處在於,具備可擴展性,當數據增加的時候,無須增加單臺機器的存儲設備,而是通過水平擴展,增加配置普通的機器來解決。建立分佈式索引,可採用

Hadoop 這類分佈式系統進行構建,Hadoop 實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱 HDFS。HDFS 有高容錯性的特點,並且設計用來部署在低廉的硬件上; 同時它提供高傳輸率來訪問應用程序的數據,適合那些有着超大數據集的應用程序。HDFS 的上一層是 MapReduce 引擎,用於大規模數據集的並行運算。概念 Map(映射)和 Reduce(規約),和它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。基於這些分佈式特性,搜索索引建立可以非常容易地通過它來進行擴展。利用

Hadoop 的平臺和 MapReduce 的機制,來實現建立分佈式搜索索引,是非常好的實踐。

 

分佈式搜索,是將原來的單個索引文件劃分成 n 個切片(shards)。搜索時,並行的搜索這 n 個切片,每個切片返回當前 shard 的 topK 命中結果;然後將 n 個切片的局部 topK 進行歸併排序,得到全局的 topK 排序結果。分佈式搜索的好處在於:更好的可擴展性,在用戶訪問次數和索引大小兩個維度都具有水平擴展能力;更高的穩定性,容許部分失敗,調用成功率顯著提高;更靈活的全量更新策略,可針對不同類型的數據;更靈活的排序算法,可   以針對不同類目,做定製化的排序;更好的可維護性和通用性,支持不同類型的搜索。

 

大數據平臺架構設計

        近年來,大家對大數據的關注度和使用頻率越來越高,軟件產品中的各類數據都被記錄  下來,以便更好地研究和分析。在電商企業中,每天系統記錄下來的運營數據,達到幾百

GB 增量的規模,爲了保證所有數據能集中存儲並且可隨時訪問,越來越多的企業把離線數據體系從商用的 Exadata 等解決方案,全面轉向開放的 Hadoop 體系當中,以謀求成本與擴展性的平衡。

 

有一定技術實力的互聯網公司,紛紛搭建自己的大數據平臺,如圖所示是一個典型

 

 

 

的大數據平臺的技術架構,下面我們一起來學習。從圖 可以看到,大數據平臺是由數據存儲、數據同步分發、監控、離線計算、平臺安全、資源申請等部分構成的

 

數據存儲,是整個大數據平臺的基礎,包含如:HDFS、HBase、Hive、MapReduce、

Storm 等等。下面,我們對其中的主要框架做些介紹,詳細資料大家可以到搜索引擎中獲取。

HDFS,分佈式文件系統,Hadoop 的核心組成部分。

MapReduce,分佈式數據處理,Hadoop 核心之一。

HBase,一個分佈式的,列存儲數據庫,使用 HDFS 作爲底層存儲,同時支持 MapReduce

的批量式計算和點查詢。

Zookeeper,一個分佈式的,高可用的協調服務。提供分佈式鎖之類的基本服務,用於構建分佈式應用。

Hive,分佈式數據倉庫,Hive 管理 HDFS 中存儲的數據,並提供基於 SQL 的查詢語言用以查詢數據。

Hama,建立在 Hadoop 上的分佈式並行計算框架,基於 Map/Reduce 和Bulk Synchronous

的實現框架,運行環境需要關聯 Zookeeper、HBase、HDFS 組件。

Mahout,一個基於 MapReduce 的機器學習算法庫,運行在 Hadoop 集羣上。

Cassandra,一種混合的非關係型數據庫,類似於 Google 的 BigTable。

以上就是數據存儲層中,用到的一些開源數據框架,我們繼續看大數據平臺的其他組成  部分。

數據同步分發,這個組件對數據同步和分發做統一管理,可實現異步、分佈式的數據同  步和分發。

 

監控,指的是對大數據平臺的服務和資源,進行監控和預警,包括數據存儲的可用性、  性能、系統負載、資源請求的響應時效等。

離線計算,處理離線計算任務的模塊,包括任務容器、任務調度定時器、異常捕獲等模  塊,確保離線計算任務能夠在資源容許的情況下,按計劃運行。

平臺安全,主要包括對數據訪問權限的管理,把數據劃分成不同的安全等級進行管理,  當訪問某些安全級別高的數據時,會觸發一個審批流程,經過主管審批後才能訪問。

資源申請,指的是對大數據平臺的計算或存儲資源發起一個使用請求,這裏會記錄每一  個數據操作訪問,以供日後審計。

 

結語

覆盤與總結.

  總結:

          做Java生鮮電商平臺的互聯網應用,無論是生鮮小程序還是APP,電商搜索引擎架構設計與大數據平臺架構實踐是非常重要的,本文只是起一個拋磚引玉的作用,

          希望用生鮮小程序的搭建電商搜索引擎架構設計與大數據平臺架構實踐實戰經驗告訴大家一些實際的項目經驗,希望對大家有用.

 QQ:137071249

共同學習QQ羣:793305035

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