当前位置: 首页 > news >正文

网站建设不完整 审核网站建设课程设计实验指导书

网站建设不完整 审核,网站建设课程设计实验指导书,seo整站排名,做简历哪个网站好前言 春节放假期间#xff0c;一个项目上的积分接口被刷#xff0c;而且不止一个人在刷#xff0c;并且东西也被兑走#xff0c;放假晚上被人叫起来排查问题#xff0c;通过这个人的积分明细观察#xff0c;基本一秒就能获取一次#xff0c;远远超过了积分规则限定的次…前言 春节放假期间一个项目上的积分接口被刷而且不止一个人在刷并且东西也被兑走放假晚上被人叫起来排查问题通过这个人的积分明细观察基本一秒就能获取一次远远超过了积分规则限定的次数这肯定是用脚本了虽然后期联系死活说自己是正常途径获取。由于是业主我们还是决定自己来承担这个损失被项目方从合同中扣除奖品费用1万余元。 问题原因 先说下接口的逻辑层次结构 –controller 积分获取接口用PointController表示 –service 积分获取接口service用PointService表示 我用伪代码来表示整个调用逻辑 PointController RestController public class PointController {Resourceprivate PointService pointService;GetMapping(/addPoint)public Response addPoint() {//分布式锁使用redis的NX命令RedisDistributedLock lock new RedisDistributedLock();//创建一个3s过期100ms休眠的锁if(lock.lock(POINT_KEY, 3000L, 100L)) {try {//调用pointService.addPoint();} catch (Exception ex) {e.printStackTrace;} finally {//解锁lock.unlock(POINT_KEY);}}return Response.ok(getLastPoint());} }创建一个分布式锁对象该分布式锁使用redis的NX命令实现随后创建一个3s过期的分布式锁以便锁住该新增积分的请求最后在新增积分执行完后在finally中释放锁最后返回该用户的最终积分 PointService public class PointService {Transactional(rollbackFor Exception.class)public void addPoint() {//查询积分规则PointRule pointRule getPointRule();//查询用户该积分项的积分获取记录总数Integer total getPointRecords();//判断该用户的积分记录总数是否大于 积分规则限定的次数//大于则不处理返回if(total - pointRule.getRuleTimes 0) {return;}//生成积分记录int insert insertPointRecords();//更新用户总积分if(insert 0) {updateUserPoint();}} }PointService 中的添加积分逻辑 首先查询该项目积分规则查询用户该积分项的积分获取记录总数判断该用户的积分记录总数是否大于 积分规则限定的次数大于则不处理返回生成积分记录更新用户总积分 该添加积分的逻辑整体上看好像没什么问题也确实在一切正常的情况下运行是不会有问题的。 如果PointService 中的添加积分逻辑在分布式锁有效期3s内执行完是不会有问题的。 但如果PointService中的添加积分逻辑超过3s…那是不是后续请求又可以获取锁了这也正是这次事故的原因。 因为PointService中的添加积分逻辑超过了3s并且上一个请求的事务还未提交后续请求已经获取锁进入PointService在查询积分记录后判断还是满足规则继续执行后续的逻辑造成用户能够获取多次积分。 问题处理 原因总结一下 添加积分逻辑处理时间过长分布式锁超时 第一个问题逻辑改动过大需要时间调整没有采用 第二个问题换成Redisson因为redisson在即使超时的情况下也会续锁避免锁超时 总结 一方面因为忙于做项目忽略了代码Review另一方面测试的时候没有对接口进行并发测试或者根本没有测出来第三没有监控工具监控长事务以及频繁请求。 作者其他文章 《PrometheusGrafana 实践派》专栏火热更新中 Grafana 的介绍和安装Grafana监控大屏配置参数介绍一Grafana监控大屏配置参数介绍二Grafana监控大屏可视化图表Grafana 查询数据和转换数据Grafana 告警模块介绍Grafana 告警接入飞书通知 Spring Boot Admin 系列 Spring Boot Admin 参考指南SpringBoot Admin服务离线、不显示健康信息的问题Spring Boot Admin2 EnableAdminServer的加载Spring Boot Admin2 AdminServerAutoConfiguration详解Spring Boot Admin2 实例状态监控详解Spring Boot Admin2 自定义JVM监控通知Spring Boot Admin2 自定义异常监控Spring Boot Admin 监控指标接入Grafana可视化
http://www.hkea.cn/news/14580438/

相关文章:

  • 平面设计网站首页新手做导航网站
  • 同人那个小说网站做的最好dede 友情链接 网站简况 调用
  • 做视频赚钱的网站wordpress 屏蔽
  • 江苏工信部网站备案查询济南效果图制作公司
  • 上海做网站吧wordpress默认分类链接
  • 女生化妆品网站建设规划书深圳网站关键词排名
  • 帮别人做网站怎么赚钱制作网页软件免费
  • 建设完网站如何信息更新中国建设机械职业教育网证书查询
  • 设计海报网站赣州建设工程信息网
  • 网站 打赏功能微信公众号服务号怎么创建
  • 淘宝可以在哪些网站上面打做推广需要注册的网站建设
  • 保定做网站国外网站设计理念
  • 网站网络优化外包盘锦网站设计
  • 做的网站太大怎么办网站生成静态页面
  • 腾讯云学生机做网站什么做的网站吗
  • 江门网站设计制作莱芜网络推广公司哪里有
  • 瑞安电影城网站建设学校网站建设方案书
  • 互联网营销型网站什么软件能把做的网站上传
  • 建站 网站程序建设集团网站
  • 企业做网站和宣传册的作用html中文网站作业
  • 网站设计建设收费标准深圳高端家具公司
  • 深圳微信网站开发做外贸需要浏览外国网站
  • 济阳网站建设大连免费建站
  • 石家庄建站公司wordpress筛选插件
  • 网站备案能快速备案嘛建筑设计费一般多少钱一平方
  • 网站开发href使用本地链接网站制作 合肥
  • 开源网站统计网站怎么优化推荐
  • 天津市建设局网站如何做网站搭建
  • 建站服务的网络公司有哪些领动营销网站建设
  • 看网站的关键词网页制作英文