- CSDN博客地址(关注,点赞)
- 人工智能推荐
- GitHub(Star,Fork,Watch)
前言
最近在做阅读类的业务,需要记录用户的PV,UV;
项目状况:前期尝试业务阶段;
特点:
- 快速实现(不需要做太重,满足初期推广运营即可)
- 快速投入市场去运营
收集用户的原始数据,三要素:
- 谁
- 在什么时间
- 阅读哪篇文章
提到PV,UV脑海中首先浮现特点:
- 需要考虑性能(每个客户每打开一篇文章进行记录)
- 允许数据有较小误差(少部分数据丢失)
架构设计
- 架构图:
- 时序图
- 记录基础数据MySQL表结构
CREATE
- 技术实现方案
SpringBoot
Redis
MySQL
代码实现
- 完整代码(GitHub,欢迎大家Star,Fork,Watch)
https://github.com/dangnianchuntian/springboot
- 主要代码展示
- Controller
/*
- Service
/*
测试
- 模拟用户请求访问后台(多次请求)
- 查看缓存中访问数据
- 模拟定时任务将缓存中数据同步到DB中
- 这时查看缓存中的数据已经没了
- 查看数据库表结构
总结
- 项目中定时任务
- 问演示方便用http代替定时任务调度;实际项目中用XXL-job,参考:定时任务的选型及改造
- 定时任务项目中用redis锁防止并发(定时任务调度端多次调度等),参考:Redis实现计数器---接口防刷---升级版(Redis+Lua)
- 后期运营数据可以从阅读记录表中拉数据进行相关分析
- 访问量大:可以将MySQL中的阅读记录表定时迁移走(MySQL建历史表,MongoDB等)