高并发秒杀——开篇
2016-07-22 00:31
274 查看
基于SpringMVC+Spring+MyBatis实现高并发秒杀API(API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。)
1、SpringMVC+Spring+MyBatis使用与整合
使用的优点:
1)框架易于使用和轻量级(轻量级重量级某种程度上是以启动程序需要的资源来决定。比如,EJB启动的时候,需要消耗大量的资源,内存,CPU等,所以是重量级。而Spring则不,所以是轻量级框架。专业点说就是量级主要是看对容器的依赖性所决定的,依赖性越小,越轻量.)
2)低代码侵入性
3)成熟的社区和用户群
秒杀业务场景具有典型“事务”特性
秒杀/红包类需求越来越常见
面试常问问题
2、秒杀类系统需求理解和实现
3、常用技术解决高并发问题
MySQL:
1、表设计
2、SQL技巧
3、事务和行级锁
MyBatis:
1、DAO层设计与开发
2、MyBatis合理使用
3、Spring+MyBatis整合
Spring:
1、Spring IOC整合Service
2、声明式事务运用
SpringMVC:
1、Restful接口设计和使用
2、框架运作流程
3、Controller开发技巧
前端:
1、交互设计
2、Bootstrap
3、jQuery
高并发:
1、高并发点和高并发分析
2、优化思路并实现
基于maven创建项目:
创建之前的说明:
1、从零开始创建
2、从官网获取相关配置(文档更全面权威、避免过时或错误)
Logback: http://logback.qos.ch/manual/configuration.html
Spring: http://docs.spring.io/spring/docs/
Mybatis: http://mybatis.github.io/mybatis-3/zh/index.html
3、使用maven创建项目
Maven命令创建web骨架项目
mvn archetype:creat -DgroupId=org.seckill -DartifactId=seckill (这两个Id标注项目的坐标)
-DarchetypeArtifactId=maven-archetype-webapp(使用web原型创建项目)
秒杀系统业务流程:
秒杀业务的核心——>库存的处理
用户针对库存业务的分析:
什么是购买行为?
记录秒杀成功信息:
1、谁购买成功
2、成功的时间/有效期
3、付款/发货信息
关于数据落地
Mysql vs Nosql
难点问题竞争:
Mysql实现秒杀难点分析
事务 + 行级锁
事务:
Start Transaction
Update 库存数量
Insert 购买明细
Commit
行级锁:
秒杀的难点是如何高效的处理竞争?
天猫的秒杀系统大概是这样
秒杀功能:
秒杀接口暴露
执行秒杀
相关查询
代码开发阶段
DAO设计编码
Service设计编码
Web设计编码
数据库编码
(SQL文件)
基于MyBatis实现DAO
MyBatis特点:参数 + SQL = Entity/List
SQL写在:
1、XML提供SQL(选)
2、注释提供SQL
DAO接口:
1、Mapper自动实现DAO接口(选)
2、API编程方式实现DAO接口
1、SpringMVC+Spring+MyBatis使用与整合
使用的优点:
1)框架易于使用和轻量级(轻量级重量级某种程度上是以启动程序需要的资源来决定。比如,EJB启动的时候,需要消耗大量的资源,内存,CPU等,所以是重量级。而Spring则不,所以是轻量级框架。专业点说就是量级主要是看对容器的依赖性所决定的,依赖性越小,越轻量.)
2)低代码侵入性
3)成熟的社区和用户群
秒杀业务场景具有典型“事务”特性
秒杀/红包类需求越来越常见
面试常问问题
2、秒杀类系统需求理解和实现
3、常用技术解决高并发问题
用到的技术
MySQL:
1、表设计
2、SQL技巧
3、事务和行级锁
MyBatis:
1、DAO层设计与开发
2、MyBatis合理使用
3、Spring+MyBatis整合
Spring:
1、Spring IOC整合Service
2、声明式事务运用
SpringMVC:
1、Restful接口设计和使用
2、框架运作流程
3、Controller开发技巧
前端:
1、交互设计
2、Bootstrap
3、jQuery
高并发:
1、高并发点和高并发分析
2、优化思路并实现
基于maven创建项目:
创建之前的说明:
1、从零开始创建
2、从官网获取相关配置(文档更全面权威、避免过时或错误)
Logback: http://logback.qos.ch/manual/configuration.html
Spring: http://docs.spring.io/spring/docs/
Mybatis: http://mybatis.github.io/mybatis-3/zh/index.html
3、使用maven创建项目
Maven命令创建web骨架项目
mvn archetype:creat -DgroupId=org.seckill -DartifactId=seckill (这两个Id标注项目的坐标)
-DarchetypeArtifactId=maven-archetype-webapp(使用web原型创建项目)
秒杀系统业务流程:
秒杀业务的核心——>库存的处理
用户针对库存业务的分析:
什么是购买行为?
记录秒杀成功信息:
1、谁购买成功
2、成功的时间/有效期
3、付款/发货信息
关于数据落地
Mysql vs Nosql
难点问题竞争:
Mysql实现秒杀难点分析
事务 + 行级锁
事务:
Start Transaction
Update 库存数量
Insert 购买明细
Commit
行级锁:
秒杀的难点是如何高效的处理竞争?
天猫的秒杀系统大概是这样
秒杀功能:
秒杀接口暴露
执行秒杀
相关查询
代码开发阶段
DAO设计编码
Service设计编码
Web设计编码
数据库编码
(SQL文件)
基于MyBatis实现DAO
MyBatis特点:参数 + SQL = Entity/List
SQL写在:
1、XML提供SQL(选)
2、注释提供SQL
DAO接口:
1、Mapper自动实现DAO接口(选)
2、API编程方式实现DAO接口
相关文章推荐
- WindowManager的分析
- 蓝桥杯 ALGO-126 算法训练 水仙花
- Apache的配置文件,使用了自己的目录,添加了别名的使用
- CodeForces Gym 100735G
- 蓝桥杯 BASIC-19 基础练习 完美的代价
- maven中的profile文件的解析
- sublime格式化css代码插件:css format
- LeetCode 51. N-Queens
- python 子类继承父类的__init__方法
- Mybatis-update - 数据库死锁 - 获取数据库连接池等待
- Codeforces 599B: Spongebob and Joke(技巧,规律)
- CodeForces Gym 100735E
- R语言回归篇
- linux mysql问题集
- js点击标签时获取当前标签属性值
- LeetCode 52. N-Queens II
- Flatten Nested List Iterator
- Android自定义View温习
- 按照cpu架构分别打包apk
- to do