秒杀系统
笨蛋的生活
多走走。笨蛋的生活有一天也会精彩万分
展开
-
简单秒杀系统总结
过程 从 synchorinzed锁悲观锁-------------------》version乐观锁 开始考虑到大数据量并发,避免超卖现象【因为上一个线程从数据库里查询库存不为0之后,还没有进行完减库存的操作,下一个线程又开始查询库存,此时库存还不为0,所以又进行了一次减库存的操作】,加了synchorinzed锁,让一个线程得到锁之后,其他锁一直等着,直到上一个线程锁释放,下一个线程拿到才能执行,造成了线程阻塞服务器性能下降和用户在客户端界面等待时间过长,...原创 2020-08-06 21:11:35 · 226 阅读 · 0 评论 -
简单秒杀系统中的接口隐藏(安全验证)
为什么要安全验证?对于稍微懂一些电脑的人可以通过抓包方式F12获取秒杀的接口地址,如果有些人根据此自己写了一个脚本进行抢购,如果有人根据获取到的接口写了一个抢购的脚本,那么就可以通过不在app界面点击下单按钮就可以下单了,速度比点击下单按钮快得多。所以对于一些用户来说不公平。安全验证流程? 用户在下单前,先发出一个生成md5hash值的请求,根据自己抢购的商品id和自己的用户Id用Md5加密算法和随机盐生成一个hash值存到redis中,在redis中设置过期时间,等用户真正...原创 2020-08-06 20:57:56 · 1236 阅读 · 0 评论 -
简单秒杀系统中的限制单个用户访问次数
为什么要限制用户访问次数? 限制流程 用户在进行了令牌桶算法限流之后,首先判断该用户是否超过了a访问次数,如果超过了则直接返回用户信息购买失败,超过频率限制,否则调用秒杀业务,再在秒杀业务里判断是否商品超过了秒杀时间,再判断用户是否能进行秒杀 实现过程 controller.java ...原创 2020-08-06 19:50:39 · 1027 阅读 · 0 评论 -
简单秒杀系统中的redis限时抢购
为什么要限时?上一篇文章介绍了如何在大数据量用户的请求下对请求数量做限制,也就是接口限流。在实际的秒杀中,除了要考虑接口限流外,还要考虑即使用户通过了令牌桶算法的限流,但是也可能在要秒杀商品的时候(开始调用秒杀业务的时候),已经超过了进行秒杀的时间了,因为实际生活中秒杀都是有一定的时间限制,如何限制用户在规定的时间内进行秒杀,超过时间了活动结束?=============》秒杀系统使用的redis做限时抢购使用redis做限时抢购的大概过程1.把要进行秒杀的商品提前在秒杀前放到redis.原创 2020-08-06 14:51:59 · 860 阅读 · 0 评论