高并发下文章点击量设计

阅读: 评论:0

高并发下文章点击量设计

高并发下文章点击量设计

游客或者会员在点击文章的时候,需要对文章的点击量做一个计数统计。考虑到点击量计数的准确性,有以下几个需求:

  • 用户可以不需要登录
  • 每当用户点击文章的详情页面,这个文章的点击量+1
  • 用户能实时看到文章点击量,也就是用户点击后能及时看到+1
  • 点击量最终保存在数据库中,最终一致性
  • 作者在后台编辑文章然后保存时,如果这期间有点击量的增加,保存文章时不能覆盖掉这段时间的增量
  • 需要对用户去重处理,也就是一个人在一定时间内多次点击只计数一次,防止用户不断刷新或者使用爬虫不断请求某个API
  • 要过滤掉百度和谷歌的爬虫请求(根据User-Agent头判断,可以先不做)

一、设计思路

1、因为用户的数量可能很多,所以要求做到高并发,直接在数据库做加1操作不行,考虑利用缓存计数;

2、要求最终数据库数据一致性,考虑利用定时任务从缓存中获取;

3、用户可以匿名,所以缓存的key设计可以用文章标题的hash+用户ip;

4、防止爬虫或者快速刷接口,需要在后端对同一个用户的同一篇文章在缓存中打标;

5、保存文章更新的时候,不能更新点击量,点击量通过定时任务从缓存中获取,防止数据被覆盖;

5、考虑到缓存的使用效率,需要对缓存的key做过期设置,或者主动清除旧的key。

二、设计实现

1、文章详情获取请求路径:Get  /article/{title}

      在请求详情的时候,同时请求点击量+1的接口 Put   /article/{title} , 然后后端同步返回200

2、缓存的key设计,文章点击量key-> article:title:num  缓存的时间可以设置为1周;对用户文章点击量去重,设计key: article:title:ip, 缓存的有效时间1分钟,也就是1分种内同一个ip,同一片文章多次点击只计数一次。

3、数据库表设计

idtitleclick_numcreate_timeupdate_time
     

 

本文发布于:2024-02-01 11:41:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170675891436348.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文章
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23