# spikesystem **Repository Path**: EricLoveMia/spikesystem ## Basic Information - **Project Name**: spikesystem - **Description**: Java秒杀系统方案优化 高性能高并发实战,包括多种缓存 / 分布式session / RabbitMQ 异步下单 / 图形验证码 / 限流防刷。 1、分布式系统方案 从单机到集群,易于横向扩展只需增加服务器即可应对更大的流量和并发 2、系统极致优化 浏览器缓存/Nginx缓存/ 页面缓存/ 对象缓存/RabbitMQ队列异步下单,减少网络流量,减轻数据库压力,全面提升系统并发处理能力 3、深入微服务技能 SpringBoot/ RabbitMQ /Redis/ MySQL , 基于时下最火热的Java微服务框架 4、安全策略 图形验证码、限流防刷、接口地址隐藏 , 多种安全机制拒绝机器人刷票党 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-01-14 - **Last Updated**: 2022-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spikesystem #### 《[Java秒杀系统方案优化 高性能高并发实战](https://coding.imooc.com/class/168.html)》介绍 **Java秒杀系统方案优化 高性能高并发实战,包括多种缓存 / 分布式session / RabbitMQ 异步下单 / 图形验证码 / 限流防刷。** ##### 亮眼的!高并发秒杀系统核心技术 1. 分布式系统方案 从单机到集群,易于横向扩展只需增加服务器即可应对更大的流量和并发 2. 系统极致优化 浏览器缓存/Nginx缓存/ 页面缓存/ 对象缓存/RabbitMQ队列异步下单,减少网络流量,减轻数据库压力,全面提升系统并发处理能力 3. 深入微服务技能 RabbitMQ /Redis/ MySQL , 基于时下最火热的Java微服务框架 4. 安全策略 图形验证码、限流防刷、接口地址隐藏 , 多种安全机制拒绝机器人刷票党 #### 环境参数 - 后端实现框架 - SpringBoot/MyBatis/JSR303 - 前端实现框架 - Thymeleaf/Bootstrap/JQuery - 中间件 - RabbitMQ/Redis/Druid #### 收获内容 - 应对大并发: - 多层次多粒度缓存+消息队列异步+服务器分布式部署 - 专业的压测工具: - 有依有据,鉴证系统的优化过程 - 关键技术细节: - 极致优化体现在极小的细节,不仅仅是突破瓶颈 - 系统设计经验: - 真实系统设计经验分享,更高级的技术手段+解决方案 #### 课程目标 - 秒杀核心技术 - 不仅仅是秒杀 #### 章节目录(详见wiki) ##### 第1章 课程介绍(讲师参与学习讨论) > 本章将为大家介绍课程目标,课程技术栈,课程收获,以及课程安排,让大家更好的了解这门课程具体能帮助大家学习到哪些内容,能有哪些提高,希望本课程能很好的帮助大家学习知识,提高解决问题的能力。 1-1 课程导学 ##### 第2章 项目开发环境与框架搭建 > 本章将带大家基于Maven的Spring-Boot工程框架进行项目框架搭建, 并集成Thymeleaf服务端页面模板,集成Mybatis和Druid连接池访问数据库, 并在Linux下源码安装Redis服务器以及集成Redis客户端Jedis等等,为后续的内容做好准备工作 2-1 项目环境搭建(eclipse) 2-2 项目环境搭建(idea) 2-3 集成mybatis 2-4 linux下源码安装redis 2-5 集成redis上 2-6 集成redis中 2-7 集成redis下 ##### 第3章 实现用户登录以及分布式session功能 > 本章将带大家实现用户登录功能,为了数据传输和存储的安全性,实现密码两次MD5入库,利用Redis实现分布式Session。一则熟悉SpringBoot开发模式和该选型下的技术衔接,二则为后面的秒杀功能提供必备的用户信息。 3-1 明文密码两次md5入库 3-2 登录功能实现上 3-3 登录功能实现下 3-4 集成Jsr303参数校验框架 3-5 系统通用异常处理 3-6 分布式session上 3-7 分布式session下 ##### 第4章 秒杀功能开发及管理后台 > 本章将实现秒杀的交互设计和秒杀功能的前端和后台,随着后期优化策略的讲解,秒杀前后端功能也要进行相应改造(我们会通过演进的方式一步一步的进行优化)。 4-1 商品列表页 4-2 商品详情页上 4-3 商品详情页下 4-4 秒杀功能实现 4-5 订单详情页 ##### 第5章 秒杀压测-Jmeter压力测试 > 本章会教大家学会用压力测试对功能进行测试。首先我们会介绍一款神器-JMeter,并教大家学会如何用命令行压力测试,如何自定义变量模拟多个用户并发请求,然后对第三章的接口做压测,记录QPS,并根据压测结果分析系统由于并发带来的问题和系统的瓶颈点,“发现卖超”这种情况。 5-1 jmeter快速入门 5-2 自定义变量模拟多用户 5-3 命令行压测上 5-4 命令行压测下 ##### 第6章 页面级高并发秒杀优化(Redis缓存+静态化分离) > 本章将使用不同层级和粒度的缓存对系统做优化改造,比如:对服务端手动渲染商品列表做页面缓存,对商品详情静态化来利用客户端浏览器的缓存,对热点数据做对象级的缓存,此外Nginx接入层可以加缓存、还可以使用CDN缓存等等。改造以后会再次做压测,与之前的QPS做对比,本章还会讲解如何解决上一章中的“超卖”问题。 6-1 商品列表页页面缓存实现 6-2 热点数据对象缓存上 6-3 热点数据对象缓存下 6-4 商品详情静态化 6-5 秒杀接口前后端分离 6-6 订单详情静态化,解决卖超问题 6-7 静态资源优化 ##### 第7章 服务级高并发秒杀优化(RabbitMQ+接口优化) > 本章将通过预减库存减少透穿到DB的请求,通过异步处理和排队机制缓解数据库的压力,降低应用接口负载,主要包括RabbitMQ安装和配置,四种交换机模式介绍,Redis做库存预判,消息队列异步写库,秒杀接口优化。JMeter再次做压测,并跟之前的效果做对比。 7-1 接口优化的思路概述 7-2 linux下源码安装rabbitmq 7-3 集成rabbitmq上 7-4 集成rabbitmq下-4种交换机模式 7-5 redis预减库存,rabbitmq异步下单 7-6 使用本地标识减少redis请求 7-7 压力测试对比 ##### 第8章 图形验证码及恶意防刷 > 本章将教大家学会如何隐藏秒杀地址,实现图形验证码,接口限流防刷,列表页和详情页防刷,秒杀操作防刷,验证码防刷等。最后也会介绍一些防止爬虫或者秒杀神器的常用方案。 8-1 隐藏秒杀地址 8-2 图形验证码上 8-3 图形验证码下 8-4 接口限流防刷上 8-5 接口限流防刷下 #### 版本及工具