基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)

目录

项目初步搭建

重点:redis的API封装,(设计模式适配器模式)

重点:通用异常和通用响应

实现用户登录以及分布式session功能

重点:集成Jsr303参数效验

重点:分布式session的设计

重点:自定义参数注入(参数解析器)

秒杀功能开发及管理后台


基于spring boot高性能高并发秒杀系统方案及优化(第二部分:秒杀优化演进+接口隐藏+接口限流)

项目源码:https://github.com/yingyingqiqi/flash

这是电商系统的一个模块,主要涉及秒杀这个应用场景,但是,里面的知识却超越了秒杀,涉及到高并发、高性能的系统构建(缓存+异步+限流)

闲扯:这篇文章是对慕课网“Java秒杀系统方案优化 高性能高并发实战”课程的学习总结,以及自己的一些看法和改良,很久之前看的课程了,现在二刷,并加上一些示意图,方便自己或者他人理解秒杀涉及到的技术。

文章整体思路介绍:

1.完成一些基础的工具类开发,分布式会话、原生redis的API集成、参数的效验及解析、秒杀的初步构想。

2.秒杀的优化,各种加缓存、异步化、防刷限流。

3.这篇文章不讲代码的实现,主要讲思路,给出示意图,方便理解。

技术栈:spring+ spring boot+ mybatis+ +redis+ rabbitmq+ 前端技术知识

项目初步搭建

基于Maven的Spring-Boot工程框架进行项目框架搭建, 并集成Thymeleaf服务端页面模板,集成redis、集成mybatis,主要导jar包,复制粘贴配置文件,再设计实体类,设计数据库,这些就看看代码吧。

重点:redis的API封装,(设计模式适配器模式)

基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)_第1张图片 redis+redis客户端封装

适配器模式:在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。 

这个keyprefix----类适配器模式,适配器继承自己实现的类(一般多冲继承),图上面有很详细的备注,自己根据图和代码摸索一番。

重点:通用异常和通用响应

基于 SpringCloud 微服务架构的广告系统(第一部分:eureka、zuul、通用模块)写的很清楚,这就不再次介绍了。

实现用户登录以及分布式session功能

为了用户登陆数据传输和存储的安全性,实现密码两次MD5入库,利用Redis实现分布式Session。为后面的秒杀功能提供必备的用户信息。

重点:集成Jsr303参数效验

1.自定义效验注解IsModile。(可以参考NotNull自带的注解)

2.实现ConstraintValidator接口,先改initialze(IsModile a)属性,及初始化验证器。再实现实际验证逻辑

基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)_第2张图片 参数效验

重点:分布式session的设计

1.用户请求登陆页面,验证用户名密码,并通过数据库检查是否正确

2.获取用户对象信息(user),及随机分配一串字符(token),存入redis数据库中,键token值user

3.用户请求其他页面,携带token,既可以访问系统,其他页面程序通过token获取redis的用户信息(user)

(也就是我们没有使用servlet自带的session,主要就是session不知道怎么跨服务器传)

基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)_第3张图片 分布式会话

重点:自定义参数注入(参数解析器)

1.使用场景:用户携带token,程序需要user对象,难道每个程序都写上根据token获取user代码吗?参数解析器,就可以自动注入user对象到controller方法中。

2.实现HandlerMethodArgumentResolver接口,将实现类注入springMVC容器中。

基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)_第4张图片 参数解析器(自定义参数注入)

秒杀功能开发及管理后台

实现秒杀的交互设计和秒杀功能的前端和后台,随着后期优化,秒杀前后端功能也要进行相应改造(我们会通过演进的方式一步一步的进行优化)。这些就看看代码,不是很难,纯粹的CRUD操作。两个重点的接口,商品列表、商品详情、商品秒杀接口。

未优化前

基于spring boot高性能高并发秒杀系统方案及优化(第一部分:初步方案+分布式会话+参数效验解析)_第5张图片

下一篇文章:

基于spring boot高性能高并发秒杀系统方案及优化(第二部分:秒杀优化演进+接口隐藏+接口限流) 

你可能感兴趣的:(SpringBoot,完整项目,学习总结,秒杀系统,秒杀系统详解)