Java实战JavaEEJava学习笔记

实战篇:基于SSM的秒杀系统之高并发优化

2016-12-09  本文已影响753人  低调的廷哥

今天是这个系列的最后一点东西,也是最重要的一点东西,可以说是整个系列最终要的,在这篇文章中,你会初步了解一些优化高并发的知识。如果你没有阅读前几篇,希望您先浏览一下,地址如下
实战篇:基于SSM的秒杀系统之项目介绍
实战篇:基于SSM的秒杀系统之项目搭建和数据库设计
实战篇:基于SSM的秒杀系统之DAO层搭建
实战篇:基于SSM的秒杀系统之Service层搭建
实战篇:基于SSM的秒杀系统之WEB层搭建

优化点

我们先来看一下整个系统的可以进行高并发的优化点有哪些


秒杀流程图

如图所示,图中红色的部分都是高并发的点,而绿色的则不需要,下面呢将一部分一部分的进行讲解

详情页优化

详情页优化流程

我们都知道在秒杀商品的时候我们都会刷新页面,所以详情页的访问量很高,但是详情页基本上是不变的,所以我们想到用CDN进行优化,先来介绍一下CDN:

CDN的理解

CDN的理解

CDN主要用来对静态资源进行优化,很多大的公司都有自己的CDN,也有很多公司提供CDN加速服务。

获取系统时间的优化

实际上获取系统时间不需要进行优化,因为Java获取系统的时间很快,Java访问一次内存的时间大约为10ns,所以这一块可以不用进行过多的优化。

秒杀地址接口的优化

这一部分是高并发的重灾区,所以重点讲一下


秒杀接口分析

秒杀地址接口属于动态资源,只能从服务器端进行优化,分析之后就要进行优化了


秒杀地址接口优化
解释一下超时穿透,就是说,高并发的东西先缓存在redis中,如果要访问的时候redis中没有则去数据库访问或者超时的时候主动去数据库拉去新的数据

秒杀操作的优化

秒杀操作的优化

介绍几种操作的方案


操作方案

针对这几种方案,在成本上进行分析一下


成本分析

Java事务控制分析

Java事务控制分析

从图中可以看出,在整个事务中,行级锁是造成时间延迟的根本原因,那么怎么来解决这个问题呢?


事务瓶颈分析

根据分析我们可以发现,我们优化的方向是减少行级锁的持有时间,换句话说就是在数据库执行成功之后,我们要在数据库里判断而不是在程序中判断,所以我们的方向是


如何判断是否更新成功
如何放到MySQL服务端

上边基本上寥寥草草的讲述了优化,最后来总结一下

![优化总结](http:https://img.haomeiwen.com/i1007420/b3c567179d2faaf5.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

简单优化
总的优化框架

最后做一个总结,就是这个系列通过什么优化的呢?CDN对静态资源进行优化,Redis对数据库操作进行优化,存储过程对MySQL进行优化

最后源码地址:https://github.com/lctiter/seckill

上一篇下一篇

猜你喜欢

热点阅读