前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于spring boot高性能高并发秒杀系统方案及优化 第一部分

基于spring boot高性能高并发秒杀系统方案及优化 第一部分

作者头像
营琪
发布2019-12-02 13:58:27
1.3K0
发布2019-12-02 13:58:27
举报
文章被收录于专栏:营琪的小记录营琪的小记录

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43126117/article/details/94396352

项目源码: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封装,(设计模式适配器模式)

redis+redis客户端封装

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

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

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

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

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

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

重点:集成Jsr303参数效验

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

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

参数效验

重点:分布式session的设计

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

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

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

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

分布式会话

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

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

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

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

秒杀功能开发及管理后台

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

未优化前

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目初步搭建
    • 重点:redis的API封装,(设计模式适配器模式)
      • 重点:通用异常和通用响应
      • 实现用户登录以及分布式session功能
        • 重点:集成Jsr303参数效验
          • 重点:分布式session的设计
            • 重点:自定义参数注入(参数解析器)
            • 秒杀功能开发及管理后台
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档