-
存在着成本性问题
查看全部 -
使用redis/NoSQL的数据验真,将逻辑操作解析等校验后调用MQ进行解耦,发送消息队列,或调用MQ的异步操作提高效率异步处理事务;最后根据队列执行结果对MySQL进行操作,这一步需要根据消费消息的结果来操作,即落地实现
腾讯 阿里之前做的解决方案中常用的方案
查看全部 -
【秒杀操作优化分析】
CDN只能缓存url固定的资源:
秒杀地址是变化的,无法用CDN进行缓存
大部分写操作和最核心的数据的请求,无法用CDN
不能在缓存里减库存,因为并发,会有不一致的问题
——>通过mysql的事务来保证数据的一致性;
难点:一瞬间大量用户参与热门商品竞争,MySQL一行数据会有大量竞争,有大量的updata减库存竞争
查看全部 -
【秒杀地址接口优化】
无法使用CDN缓存,(因为秒杀地址是会变化的)
适合服务器端缓存:redis等
一致性维护成本低:超时穿透/主动更新
缓存半小时,半小时之后,这个redis的秒杀对象就会超时,超时之后 ,重新访问mysql服务器获取数据,或者是当我们的mysql更新时 我主动的更新一下redis缓存,这样也非常方便 暴露秒杀地址
查看全部 -
无法使用CDN缓存:CDN对应不变的东西,秒杀地址是变化的
可以使用业务系统控制,所以适合服务端缓存
因为一致性维护成本低,适合服务端缓存
查看全部 -
获取系统时间的请求不会缓存到CDN上,而是直接调用服务器
查看全部 -
【为什么要单独获取系统时间?】
静态资源会部署到CDN上,访问detail页,静态资源等不需要访问秒杀系统,因此要单独做一个请求获取系统时间。
【CDN的理解】
大部分的视频加速完全依赖于CDN
查看全部 -
33333
查看全部 -
为高并发优化做铺垫
查看全部 -
红色:可能出现高并发的点
绿色:无影响
查看全部 -
典型的部署架构
查看全部 -
当mysql执行update会获得行级锁,所以将insert语句调到update语句的前面,减少其获得行级锁的时间,来达到并发优化
查看全部 -
代码调整,先insert后update,减少获取rowlock的时间,优化性能
查看全部 -
代码增加redis访问
查看全部 -
在serviceImpl中注入redis层的数据
查看全部
举报