您的位置:首页 > 其它

秒杀高并发优化分析

2017-08-17 10:39 197 查看
学习了慕课网《高并发秒杀优化》视频,总结如下:

秒杀的高并发问题在哪里?



业务分析



红色部分是有可能发生高并发的地方,我们来一一分析
一、详情页通过用户大量的刷新,一些静态资源需要加载,这个耗费IO时间。优化方案:使用CDN缓存



CDN(内容分发网络)可以加速用户获取数据;部署在离用户最近的网络节点上;命中CDN不需要方法后端服务器;互联网公司可以自己搭建或租用。

二、系统时间不用优化,因为访问一次内(Cacheline)大约10ns。

三、秒杀地址接口





四、秒杀操作



方案一:天猫阿里用到的优化:



曾看过看过一篇博客《 ITOO---选课里的“秒杀”业务实现(一)》就是这样实现的。
把资源放到redis中,把资源竞争引入到redis,因为redis并发量高达几万或者几十万;业务逻辑发送到MQ,然后并发写到库中。
这其中有一个redis并发问题,虽然redis是单线程,但还是存在因操作上引起的数据覆盖,这里应该把所有的业务逻辑都一步执行,执行完毕后其它业务才能执行,这里使用到redis lua脚本,这里完全可以解决。
方案2:用mysql解决资源竞争。
有人会有疑问,mysql太低效?



无事务的执行mysql测update操作,承受并发量是4w/s。这样的效率还是挺好的。
用java控制事务之后呢



加上事务后的瓶颈



这样的并发量只有500/s。



1、网络延迟





大概要20ms左右,如果不计算其他业务时间,并发量就才50/s,所以尽量选择同城机房。
2、





第一点是需要修改mysql源码,阿里和天猫曾经用过。
第二点适用范围很大。





3、优化数据库:分库分表
搭建各种集群,如下:



总结
        这只是大体结构,还存在细节上的问题,可以多多交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  优化 并发 秒杀