電影推薦系統設計方案


一、項目簡介

  推薦系統是信息過載所采用的措施,面對海量的數據信息,從中快速推薦出符合用戶特點的物品。本項目主要根據用戶的歷史特征和行為為用戶推薦更適合他們口味的電影。整個系統可以分為統計推薦模塊、離線推薦模塊和實時推薦模塊三個部分。

  接下來將依次展示項目的分解視圖、依賴視圖、執行視圖、實現視圖、部署視圖、工作分配視圖、數據庫設計和核心工作機制。

二、分解視圖

  分解是構建軟件架構模型的關鍵步驟,分解視圖也是描述軟件架構模型的關鍵視圖,一般分解視圖呈現為較為明晰的分解結構(breakdown structure)特點。本文以UML包圖來展現系統的分解視圖。

 

三、依賴視圖

  依賴視圖在項目計划中有比較典型的應用。比如它能幫助我們找到沒有依賴關系的軟件模塊或子系統,以便獨立開發和測試,同時進一步根據依賴關系確定開發和測試軟件模塊的先后次序。

 

 四、執行視圖

  執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件(Component),都是不同於其他組件的執行實體。如果有相同或相似的執行實體那么就把它們合並成一個。

 

 五、實現視圖

  實現視圖有助於碼農在海量源代碼文件中找到具體的某個軟件單元的實現。實現視圖與軟件架構的靜態結構之間映射關系越是對應的一致性高,越有利於軟件的維護,因此實現視圖是一種非常關鍵的架構視圖

 

 六、部署視圖

  部署視圖是將執行實體和計算機資源建立映射關系。這里的執行實體的粒度要與所部署的計算機資源相匹配,比如以進程作為執行實體那么對應的計算機資源就是主機,這時應該描述進程對應主機所組成的網絡拓撲結構,這樣可以清晰地呈現進程間的網絡通信和部署環境的網絡結構特點。

 

七、工作分配視圖

  工作分配視圖將系統分解成可獨立完成的工作任務,以便分配給各項目團隊和成員。工作分配視圖有利於跟蹤不同項目團隊和成員的工作任務的進度,也有利於在個項目團隊和成員之間合理地分配和調整項目資源,甚至在項目計划階段工作分配視圖對於進度規划、項目評估和經費預算都能起到有益的作用。

 

 

 

 

 八、數據庫設計

1. Movie【電影數據表】

 

 

 

 

 

2. Rating【用戶評分表】

 

 

 

3. Tag【電影標簽表】

4. User【用戶表】

5. RateMoreMoviesRecently【最近電影評分個數統計表】

6. RateMoreMovies【電影評分個數統計表】

7. AverageMoviesScore【電影平均評分表】

8. MovieRecs【電影相似性矩陣】

9. UserRecs【用戶電影推薦矩陣】

10. StreamRecs【用戶實時電影推薦矩陣】

11. GenresTopMovies【電影類別 TOP10】

 

 

 九、核心工作機制

 

 

【綜合業務部分】

  用戶可視化:主要負責實現和用戶的交互以及業務數據的展示,主體采用AngularJS2 進行實現,部署在 Apache 服務上。

  綜合業務服務:主要實現 JavaEE 層面整體的業務邏輯,通過 Spring 進行構建,對接業務需求。部署在 Tomcat 上。

【數據存儲部分】

  業務數據庫:項目采用廣泛應用的文檔數據庫 MongDB 作為主數據庫,主要負責平台業務邏輯數據的存儲。
  搜索服務器:項目愛用 ElasticSearch 作為模糊檢索服務器,通過利用 ES 強大的匹配查詢能力實現基於內容的推薦服務。
  緩存數據庫:項目采用 Redis 作為緩存數據庫,主要用來支撐實時推薦系統部分對於數據的高速獲取需求。
【離線推薦部分】
  離線統計服務:批處理統計性業務采用 Spark Core + Spark SQL 進行實現,實現對指標類數據的統計任務。
  離線推薦服務:離線推薦業務采用 Spark Core + Spark MLlib 進行實現,采用ALS 算法進行實現。
  工作調度服務:對於離線推薦部分需要以一定的時間頻率對算法進行調度,采用 Azkaban 進行任務的調度。
【實時推薦部分】
  日志采集服務:通過利用 Flume-ng 對業務平台中用戶對於電影的一次評分行為進行采集,實時發送到 Kafka 集群。
  消息緩沖服務:項目采用 Kafka 作為流式數據的緩存組件,接受來自 Flume 的數據采集請求。並將數據推送到項目的實時推薦系統部分。
  實時推薦服務:項目采用 Spark Streaming 作為實時推薦系統,通過接收 Kafka中緩存的數據,通過設計的推薦算法實現對實時推薦的數據處理,並將結構合並更新到 MongoDB 數據庫。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM