秒杀
LUK流
大数据/java web
展开
-
关于秒杀项目的一些笔记和解释
(1) 项目整体认识(1)redis做对象缓存:(因为redis毕竟有网络开销,有些地方可以使用conCurrentHashMap代替redis)将商品秒杀对象缓存在redis中减少mysql的io用户登录token(分布式session)常用的数据标记在redis中(如:数据是否被秒杀了,是否重复秒杀等等)(2)ajax前端静态化:将html缓存在客户端,减少网络数据传输(vue是更好...原创 2019-09-03 18:02:11 · 1259 阅读 · 4 评论 -
redis分布式锁的应用和zookeeper分布式锁的应用
利用SETNX+EXPIRE实现分布式锁。SETNX:如果key不存在,那么就新增一个<key,value>,如果key存在,则不做任何操作。EXPIRE:为了防止网络拥塞,A拿到锁以后迟迟无法释放,故设置超时时间。防止B一直等待该key,A迟迟无法释放而出现死锁。思路:1.给userId+itemId形成的组合key设置一个value,设置成功就设置一个超时时间。2.如果设...原创 2019-09-17 15:04:34 · 243 阅读 · 0 评论 -
redis事务和redis分布式锁(悲观锁和乐观锁)
1.redis事务-mutil/execredis中mutil是事务的开始,exec是事务的结束127.0.0.1:6379> MULTIOK127.0.0.1:6379> set hello 1QUEUED127.0.0.1:6379> set hello 2QUEUED127.0.0.1:6379> set hello 3QUEUED127.0.0....原创 2019-09-18 15:22:07 · 2680 阅读 · 0 评论 -
关于一个秒杀业务的思考
一个秒杀的业务如下:public Result execMiaoSha(Long goodsId,User user){ //判断user是否秒杀过goodsId的商品 if(redisDao.get(Prefix.goodsAndUser+goodsId+user.getId)!=null){ throw GlobalException("不可以重复秒杀");...原创 2019-09-20 15:14:18 · 213 阅读 · 0 评论 -
关于秒杀场景的全面分析总结
1.技术层面1.高访问压力隔离将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离。2.用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀.但是持续刷新商品页面详情页会对服务器造成压力重新设计秒杀商品页面,不使用网站原来的商品详细页面,页面内容静态化(静态在CDN或客户端),用户请求不需要经过应用服务。而是静态页面,秒杀按钮在秒杀开始前无法点击。3.突然增加的网络带宽:主要是...原创 2019-09-27 13:50:49 · 2443 阅读 · 0 评论