系统初始化部分

  • 通过 Spark SQL 将系统初始化数据加载到 MongoDBElasticSearch 中。

    离线推荐部分

  • 离线统计服务从 MongoDB 中加载数据,将 [电影平均评分统计][电影评分个数统计][最近电影评分个数统计] 三个统计算法进行运行实现,并将计算结果写回到 MongoDB 中。

  • 离线推荐服务从 MongoDB 中加载数据,通过 ALS 算法分别将 [用户推荐结果矩阵][影片相似度矩阵] 写回到 MongoDB 中。

    实时推荐部分

  • Flume 从综合业务服务的运行日志中读取日志更新,并将更新的日志实时推送到 Kafka 中;

  • Kafka 在收到这些日志之后,通过 KafkaStream 程序对获取的日志信息进行过滤处理,获取用户评分数据流[UID|MID|SCORE|TIMESTAMP] ,并发送到另外一个 Kafka 队列。
  • Spark Streaming 监听 Kafka 队列,实时获取 Kafka 过滤出来的用户评分数据流,融合存储在 Redis 中的用户最近评分队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算。
  • 计算完成之后,将新的推荐结果和 MongDB 数据库中的推荐结果进行合并。

    业务系统部分

  • 推荐结果展示部分,从 MongoDBElasticSearch 中将离线推荐结果、实时推荐结果、内容推荐结果进行混合,综合给出相对应的数据。

  • 电影信息查询服务通过对接 MongoDB 实现对电影信息的查询操作。
  • 电影评分部分,获取用户通过 UI 给出的评分动作,后台服务进行数据库记录后,一方面将数据推送到 Redis 群中,另一方面,通过预设的日志框架输出到 Tomcat 中的日志中。
  • 项目通过 ElasticSearch 实现对电影的模糊检索。
  • 电影标签部分,项目提供用户对电影打标签服务。