美文网首页Java实战JavaEEJava学习笔记
实战篇:基于SSM的秒杀系统之高并发优化

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

作者: 低调的廷哥 | 来源:发表于2016-12-09 10:11 被阅读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

    相关文章

      网友评论

      • HiZlhhh:弱弱的请教一下:我不太明白这个项目的并发是怎么控制的,就比如说上百人同时秒杀一件商品怎样不会出错,用的synchronized关键字吗:hushed:
      • iHelin:这不是慕课网的视频吗

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

      本文链接:https://www.haomeiwen.com/subject/swgsmttx.html