一、高并发秒杀API简介与业务分析

源码参照:并发系统源码

1 简介

       该项目主要整合运用Mybatis+Spring+Spring MVC三个框架来开发;同时这三个框架也是互联网公司的常用框架,比如美团、阿里、搜狐、京东等大型互联网网站常用这三个框架,主要是因为这三个框架易于使用并且比较轻量级,另外一个原因就是低代码侵入性,并且拥有成熟的用户群和社区。

       现在网络上秒杀和红包类业务需求越来越常见,这种业务是一种竞争性的产品,具有很典型的事务特性。

       学会分析、设计、实现和优化类似的秒杀系统,在面试中你会更具优势,也许会遇到这样的问题:

1)如何设计一个秒杀系统?

2)如何优化一个秒杀系统?

3)常用到什么技术解决高并发问题?

        学习实现该项目,你能有所收货:框架的使用经验和整合技巧、秒杀系统的设计分析过程和优化思路,也是上述问题的答案。 

        总体来讲,该项目是一个基于Maven工具且利用Mybatis+Spring+Spring MVC三大框架实现并进行了高并发优化的Java后端秒杀系统;

 

2 业务分析

2.1 需求分析

整个秒杀系统实际是一个以库存为核心的后端的系统:

                                

一,用户针对库存分析

                               

 

2.2为什么需要事务?

       答案很明显:如果出现减库存之后没有记录购买明细、记录购买明细没有减掉库存、超卖少卖等情况,那么就是程序员的责任了,所以我们要使用事务保证数据的完整性、一致性,实现数据落地,目前,Mysql VS NoSQL的都在这方面做的不是太好,所以,事务机制依然是目前最有效最可靠的数据落地方案。

 

2.3秒杀系统的难点在哪里?

     竞争,时间延迟(事务和行级锁)

     事务具有原子性,可以将不同的操作绑定在一起作为一个整体来执行,针对该业务,主要事务流程为:

                             Start Transaction(开启事务)=>Update库存数量=>Insert购买明细=>Commit(提交事务)

    事务上可能出现竞争的地方主要在更新数据上面;

    除此之外,同一时间会有多个用户在等待秒杀更新,所以行级锁也伴随着竞争。

                            

 

          所以整个系统的难点就落在了如何高效的处理竞争、完成事务(主要在秒杀操作上)

 

2.4 需要实现的功能

    • 秒杀接口暴露操作(一些用户可能通过程序填入参数自动实现秒杀,一种不公平的操作)
    • 秒杀执行操作
    • 相关查询(列表查询,详情页查询)

 

2.5 阶段分析

综合该高并发秒杀系统,总共可以分为四个阶段:

                         业务分析---API之DAO层---API之Service层---API之web层---API之高并发优化

其中中间三部分属于开发的三个阶段:

                         DAO层—Service层—Web层

 

 

另附例子:天猫秒杀系统


 


3相关技术

              

Maven

项目构建管理工具

Jetty

基于Java的Web容器,为Jsp和Servlet提供运行环境

Junit

单元测试

Mysql

数据库创建

表的设计(手写代码,此能力有利于二次开发)

SQL编写技巧

事务和行级锁

Mybatis

提供数据访问层(DAO层)设计与开发

Mybatis合理使用(基于注解或xml配置文件的使用方式)

Mybatis与Spring整合

如何高效灵活的整合Mybatis与Spring层

Spring

Spring IOC整合Service层(依赖注入:基于注解,基于JavaConfig)

声明式事务运用(分析与行为分析)

SpringMVC

Restful接口设计和使用(Restful更常见于互联网web公司框架设计的接口规范里面)

框架运作流程

Controller开发技巧

前端

交互设计(秒杀系统的交互设计)

BootStrap前端框架的应用

jQuery:使用JQuery通信插件和Ajax等

高并发优化

分析高并发的点和瓶颈

依次来对其进行分析优化

给出优化思路对其实现

CDN

静态资源缓存

Jedis

Redis的Java应用版本;服务端动态缓存

Procedure

服务端底层优化,最大程度降低行级锁持有时间


 


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值