1.业务需求:
- 用xxljob每天凌晨1点去更新前5天的前30个热度值最高的文章
- 计算每篇文章得分,封装一个Vo对象
- 调用feign接口查询有哪些频道
- 根据频道去过滤得到每个频道的前30的list集合
- 用String类型的redis结构去存放热点数据
之前的app界面中是根据时间查询时间段内的,修改一下查询的方式在redis中查询前30条
2.2使用mq的异步调用,实时跟新
在点赞行为,阅读,评论,以及收藏功能发起消息,传入一个实体类记录该行为
- 在微服务监听这些行为并把数据缓冲到数据为后续聚合做准备
-
2.3根据用户的行为(阅读、点赞、评论、收藏)实时计算热点文章
使用xxljob每十秒钟操作一次
- 使用lua脚本把10秒钟这个时间段里面的数据取出来,并删除掉
- 根据文章id去进行分组,得到每一个文章的数据(聚合行为在新的实体类上)
- 获得的是一个根据文章i分组的list集合,遍历list集合
- 重新计算得分,更新文章的行为值(查询到加上十秒钟发生的行为)
- 判断当前文章是否存在redis中,如果存在放入集合,修改分值,不存在也是放入集合,都要重新排序,最后放入redis中