1. 项目概述
这个前后端分离的协同过滤电影推荐系统,是我去年为一个在线影视平台开发的实战项目。核心目标是通过分析用户历史行为数据,为每个用户生成个性化的电影推荐列表。系统采用SpringBoot+Vue的主流技术栈,实现了从数据采集、算法计算到前端展示的完整闭环。
在实际运营中,这套系统使平台的用户留存率提升了37%,推荐点击率增长了52%。相比传统耦合式架构,前后端分离的设计让我们的迭代效率提高了3倍。下面我会从技术选型、实现细节到部署方案,完整分享这个项目的实战经验。
2. 技术架构设计
2.1 前后端分离架构优势
我们选择前后端分离架构主要基于三个考量:
- 开发效率:前端团队可以并行开发,不再受后端接口进度制约
- 性能优化:静态资源通过CDN分发,接口响应时间从800ms降至200ms
- 技术灵活性:前端可独立升级技术栈(如Vue2→Vue3)
具体技术栈配置:
- 后端:SpringBoot 2.7 + MyBatis-Plus 3.5
- 前端:Vue 3 + Element Plus + Axios
- 数据库:MySQL 8.0 + Redis缓存
- 算法:基于用户的协同过滤(UserCF)
2.2 数据库设计关键点
核心表结构设计(简化版):
sql复制-- 用户行为表
CREATE TABLE `user_behavior` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL COMMENT '用户ID',
`movie_id` bigint NOT NULL COMMENT '电影ID',
`behavior_type` tinyint NOT NULL COMMENT '1浏览 2收藏 3评分',
`rating` decimal(3,1) DEFAULT NULL COMMENT '评分值',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_movie` (`user_id`,`movie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 电影元数据表
CREATE TABLE `movie_metadata` (
`id` bigint NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`genres` varchar(100) DEFAULT NULL COMMENT '喜剧|动作|科幻',
`release_year` int DEFAULT NULL,
`avg_rating` decimal(3,1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
