-
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