博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序发红包 公众号发红包开发中遇到的问题 大并发 频繁提现 刷接口
阅读量:7060 次
发布时间:2019-06-28

本文共 857 字,大约阅读时间需要 2 分钟。

在开发小程序红包 和公众号发红包

首先是商家端  可以发红包 用户来抢红包

抢到的红包 我们先存在他的帐号下  然后这个用户再申请提现

好了,现在开始来问题了。那就是大并发的用户提现问题了。

部分用户频繁提现,不停的刷接口。

举例来说吧,假使小黑他自己发3元钱红包,然后他自己抢,抢到以后,我们把他的钱存在一个字段里,等待他来提现。

现在问题就在这里了,他使用一些抓包软件,在同一秒钟发送数十次请求提现。这个时候我们程序是怎么执行的呢?

1.获取小黑的提现申请,比如3元,在数据库里查这个小黑账户里是否有3元钱,发现有,就让他提现。如果不足3元就不允许他提现。

一切看起来好像天衣无缝。结果没想到小黑不停的刷红包接口。账户里的钱,白白的就消失了。。。看着让人心疼啊。

这一切是什么原因呢?

原来问题就是出在小黑在一秒钟之内,发起的数十次请求,我们知道一秒钟是1000毫秒。

假使小黑发起10次请求

也就是第一请求在       第1毫秒

第二次发起的请求在第101毫秒

第三次发起请求在第201毫秒

第四次发起的请求在第301毫秒

第五次发起的请求在第401毫秒

以此类推。。。。。。

那我们的数据库和服务器有关系,也许返回的结果没那么快。

假设我们从接到小黑的第一次请求到查询小黑的账户余额还有多少钱,然后程序来判断能不能让他提现走这3元。假设这中间需要320毫秒。

那么也就是说第一次,第二次,第三次,第四次这四次的请求,程序都判断他账户里还有3元钱,都让他提现走了。。。。

这下小黑一下就拿走了4*3=12元。

所以问题就在这里了。

那么我们就要对每次的请求做好相应的记录,标记每次请求的唯一性,不让这样的情况发生。

 

  我,秋峰,phper,目前自创业,做项目系统开发,php后端加小程序前端结合  今天就给大家分享到这里,希望对大家有所帮助。欢迎交流  大家相互学习 共同提高 我的 微信号:qiufeng2999

转载于:https://www.cnblogs.com/xinweiyun/p/7674922.html

你可能感兴趣的文章
Android App卡顿慢优化之解决内存抖动及内存泄漏
查看>>
如何查看 Python 全部内置变量和内置函数?
查看>>
原生js如何实现图片翻转旋转效果?
查看>>
黑苹果,Win7,Win10,Xp 各个系统镜像文件下载地址(备用)
查看>>
把mysql的数据导出成txt
查看>>
死锁查看处理(三)
查看>>
资源预加载preload和资源预读取prefetch简明学习
查看>>
EF 延迟加载和预先加载
查看>>
Asp.net 中高亮显示搜索关键字简单方法
查看>>
最近ES遇到discover老是失败问题,ping主节点和node节点正常,抓包发现了大量的retransmission、tcp out of order、dup ack问题。...
查看>>
CentOS下使用crontab+mysqldump实现定时自动备份数据库
查看>>
Kubernetes 在网易云中的落地优化实践
查看>>
算法题待做
查看>>
Python源码中的PyCodeObject
查看>>
ecshop后台新功能及权限的添加
查看>>
spring定时任务.线程池,自定义多线程配置
查看>>
Java程序员的日常—— IOUtils总结
查看>>
SpringBoot(十)应用监控Actuator
查看>>
MongoDB学习笔记(3)--删除数据库
查看>>
JQuery Checkbox 获取多选值 Checkbox选中个数
查看>>