秒杀高并发优化分析

学习了慕课网《高并发秒杀优化》视频,总结如下:

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

秒杀高并发优化分析_第1张图片

业务分析

秒杀高并发优化分析_第2张图片

红色部分是有可能发生高并发的地方,我们来一一分析

一、详情页通过用户大量的刷新,一些静态资源需要加载,这个耗费IO时间。优化方案:使用CDN缓存

秒杀高并发优化分析_第3张图片

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


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


三、秒杀地址接口

秒杀高并发优化分析_第4张图片秒杀高并发优化分析_第5张图片


四、秒杀操作

秒杀高并发优化分析_第6张图片

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

秒杀高并发优化分析_第7张图片

曾看过看过一篇博客《 ITOO---选课里的“秒杀”业务实现(一)》就是这样实现的。

把资源放到redis中,把资源竞争引入到redis,因为redis并发量高达几万或者几十万;业务逻辑发送到MQ,然后并发写到库中。

这其中有一个redis并发问题,虽然redis是单线程,但还是存在因操作上引起的数据覆盖,这里应该把所有的业务逻辑都一步执行,执行完毕后其它业务才能执行,这里使用到redis lua脚本,这里完全可以解决

方案2:用mysql解决资源竞争。

有人会有疑问,mysql太低效?

秒杀高并发优化分析_第8张图片

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

用java控制事务之后呢

秒杀高并发优化分析_第9张图片

加上事务后的瓶颈

秒杀高并发优化分析_第10张图片

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

秒杀高并发优化分析_第11张图片

1、网络延迟

秒杀高并发优化分析_第12张图片

秒杀高并发优化分析_第13张图片

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

2、

秒杀高并发优化分析_第14张图片

秒杀高并发优化分析_第15张图片

第一点是需要修改mysql源码,阿里和天猫曾经用过。

第二点适用范围很大。

秒杀高并发优化分析_第16张图片

秒杀高并发优化分析_第17张图片

3、优化数据库:分库分表

搭建各种集群,如下:

秒杀高并发优化分析_第18张图片


总结

        这只是大体结构,还存在细节上的问题,可以多多交流。

你可能感兴趣的:(Java)