-
EventRecommendation
1.0.0
活動推薦系統
商業設計
一般說明
- 使用 Java 中的
RESTful APIs
設計 Web 服務來處理 HTTP 請求和回應 - 前端:採用
HTML
、 CSS
和JavaScript
實現的AJAX
技術的互動式網頁。活動推薦網站主要實現三大功能:- 搜尋用戶周圍的事件
- 收藏他們喜歡的事件,也刪除他們不再喜歡的事件
- 根據他們最喜歡的歷史和距離活動舉辦地點的距離獲取周圍活動的推薦
- 後端:使用
Java
處理邏輯請求,部分支援如下:- 使用關聯式資料庫和NoSQL資料庫(
MySQL
和MongoDB
)構建,支援TicketMaster API中搜尋的使用者和專案的資料存儲 - 設計基於內容的事件推薦演算法
- 在
Amazon EC2
上部署網站伺服器:活動推薦系統 - 使用 MongoDB 中的 ELK(
ElasticSearch
、 Logstash
和Kibana
)和MapReduce
分析線上和離線網站流量
基礎設施設計
- 三層架構
- 表示層:HTML、CSS、JavaScript
- 資料層:MySQL、MongoDB
- 邏輯層:Java
- 本地和遠端開發環境
本地開發環境
遠端開發環境
API設計
- 邏輯層(Java Servlet 到 RPC)
- 搜尋
- 搜尋項目
- 票務大師 API
- 解析並清理數據,saveItems
- 回饋響應
- 歷史
- 推薦
- 推薦商品
- 獲得最喜歡的歷史
- 搜尋相似事件,排序
- 回饋響應
- 登入
- GET:檢查會話是否已登入
- POST:驗證使用者名稱和密碼,設定會話時間並標記為已登入
- 查詢資料庫進行驗證
- 回饋響應
- 退出
- GET:如果存在則無效會話並重定向到
index.html
- POST:與GET相同
- 回饋響應
- 登記
- 將新使用者設定到資料庫中的使用者表/集合中
- 回饋響應
邏輯層API設計
- TicketMasterAPI 官方文件 - 發現 API
- 推薦演算法設計
- 基於內容的推薦:從使用者最喜歡的商品檔案中尋找類別,並推薦具有相同類別的類似商品。
- 根據距離(使用者的地理位置)排名呈現推薦項目
推薦請求流程
資料庫設計
- MySQL
- users——儲存使用者資訊。
- items - 儲存項目資訊。
- 類別- 商店商品-類別關係
- 歷史記錄- 儲存使用者最喜歡的歷史記錄
MySQL資料庫設計
- MongoDB
- 用戶- 儲存用戶資訊和收藏夾歷史記錄。 =(使用者+歷史記錄)
- items - 儲存項目資訊和項目類別關係。 =(項目+類別)
- 日誌——儲存日誌訊息
實施細節
- 設計模式
- 建構器模式:
Item.java
- 將事件從 TicketMasterAPI 轉換為 java Items 時,使用建構器模式自由新增欄位。
- 工廠模式:
ExternalAPIFactory.java
, DBConnectionFactory.java
-
ExternalAPIFactory.java
:支援多種功能,如活動、餐廳、新聞、工作推薦…只需連結到不同的公共 API,如 TicketMasterAPI。提高延伸能力。 -
DBConnectionFactory.java
:支援多種資料庫,如 MySQL 和 MongoDB。提高延伸能力。
- 單例模式:
MySQLConnection.java
, MongoDBConnection.java
- 只建立特定數量的資料庫實例,類別可以控制實例本身,並賦予外部類別全域存取權限
使用者行為分析
- 線上( ElasticSearch 、 Logstash 、 Kibana )
- 使用Logstash取得日誌(類似NoSQL的形式),然後將資料儲存到ElasticSearch中,最後使用Kibana分析ElasticSearch中的數據,得到一些表格和圖表,例如API使用情況、請求狀態、訪客地理位置等
遠端開發環境
- 離線( MongoDB 中的 MapReduce )
- 從 Tomcat 伺服器複製並貼上一些日誌
- 淨化日誌資料並儲存在MongoDB中
- 在 MongoDB 中執行
mapreduce()
- 按count降序取得timebucket-count列表,然後找到網站流量的峰值時間
展開
附加信息
-
版本
1.0.0
-
類型
其他類別
-
更新時間
2025-01-13
-
大小
50MB
-
來自於
Github