一、简介
该项目主要整合Mybatis+Spring+SringMVC 三个框架开发的;同时这三个框架也是互联网公司的常用框架,比如美团、阿里、搜狐、京东等大型互联网网站常用这三个框架,主要是因为这三个框架易于使用并且比较轻量级,另外一个原因就是低代码侵入性,并且拥有成熟的用户群和社区。
现在网络上秒杀和红包类业务需求越来越常见,这种业务是一种竞争性产品,具有很典型的事务特性。
学会分析、设计、实现和优化类似的秒杀系统
1、如何设计一个秒杀系统
2、如何优化一个秒杀系统
3、常用到什么技术解决高并发问题
学习这个项目,得到收获:框架的使用和整合技巧、秒杀系统的设计分析过程和优化思路。
总体来讲,该项目是一个基于Maven工具且利用Mybatis+Spring+Spring MVC三大框架实现并进行了高并发优化的Java后端秒杀系统;
二、业务分析
1、需求分析
整个秒杀系统实际是一个以库存为核心的后端的系统:
用户针对库存分析
2、为什么需要事务
答案很明显:如果出现减库存之后没有记录购买明细、记录购买明细没有减库存、超卖少卖等情况,那么就是程序员的责任了,所以我们要用使用事务保证数据的完整性、一致性,实现数据落地。目前,Mysql VS NoSQL的都在这方面做的不是太好,所以,事务机制依然是目前最有效最可靠的数据落地方案。
3、秒杀系统难点
竞争,时间延迟(事务和行级锁)
事务具有原子性,可以将不同的操作绑定在一起作为整体来执行,针对该业务,主要流程为:
Start Transaction(开启事务)=》Update库存数量=》Insert购买明细=》Commit(提交事务)
事务上可能出现竞争的地方主要在更新数据上面;
除此之外,同一时间会有多个用户在等待秒杀的更新,所以行级锁也伴随着竞争。
所以整个系统的难点就落在如何高效的处理竞争、完成事务(主要在秒杀操作)
4、需要实现的功能
(1)秒杀接口暴露操作(一些用户通过程序填入参数自动实现秒杀,一种不公平操作)
(2)秒杀执行操作
(3)相关查询(列表查询、详情页查询)
5、阶段分析
综合该高并发秒杀系统,总共可以分为四个阶段:
业务分析-----API之DAO层-----API之Service层-------API之web层-------API之高并发优化
其中中间三个部分属于开发的三个阶段:
DAO层-----Service层-----Web层