All Projects → wenbochang888 → Seckill

wenbochang888 / Seckill

Licence: other
Java高并发秒杀系统,基于SSM + redis实现

Programming Languages

java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Seckill

sshm
Easy connect on EC2 instances thanks to AWS System Manager Agent. Just use your `~/.aws/profile` to easily select the instance you want to connect on.
Stars: ✭ 49 (+48.48%)
Mutual labels:  ssm
Quella
Quella是基于SSM+shiro+redis开发的后台脚手架,集成了一些后台通用功能,并集成了一些常用的第三方服务。
Stars: ✭ 52 (+57.58%)
Mutual labels:  ssm
TestActiviti1.0
该系统是基于Activiti5工作流引擎采用了SSM+Mysql实现的一个学生请假系统
Stars: ✭ 28 (-15.15%)
Mutual labels:  ssm
campusHelp
校园帮项目,毕业设计/课程设计/javaWeb/SSM
Stars: ✭ 180 (+445.45%)
Mutual labels:  ssm
foblog
响应式开源个人博客(简洁清爽风格),使用fo-ssm架构实现,前端采用AngularJS实现数据渲染,采用BootStrap实现响应式风格。
Stars: ✭ 45 (+36.36%)
Mutual labels:  ssm
ssm-ishop
项目描述:iShop商店实现浏览商品、下订单,以及参加各种活动和后台管理功能。 技术描述: 1.通过maven来项目构建管理,子系统之间通过服务提供者模块与服务接收者模块相互交互,来实现系统之间的通信,利用ajax异步请求json数据,也利用jsonp跨域请求获取json资源数据。 2.后台技术实现: 利用MyBatis Generator自动生成单表的CRUD功能和对应的model、example、mapper、service代码;3运用分布式数据库redis实现系统大量不实时更新的数据做缓存,同时实现session在redis上共享,使用powerdesinger创建pdm/cdm关系的数据库表,依文档在linux上搭建mysql创建相应的数据库和表。运用springmvc提供的注…
Stars: ✭ 28 (-15.15%)
Mutual labels:  ssm
CodeGenerator
ssm框架的代码生成器,根据数据库表生成model、dto、dao、mapperXml、service以及controller。目前仅支持mysql
Stars: ✭ 20 (-39.39%)
Mutual labels:  ssm
Hospital
基于SSM的在线医院挂号系统
Stars: ✭ 26 (-21.21%)
Mutual labels:  ssm
springsecuritydemo
使用javaconfig的方式整合SpringMVC+Mybatis+SpringSecurity实现基于数据库的权限系统,包括对按钮的权限控制。
Stars: ✭ 84 (+154.55%)
Mutual labels:  ssm
gobang04
五子棋社区,前后端完全分离,SSM框架,CORS跨域访问,SSO单点登录,Bootstrap界面,RESTful构架风格,Netty即时通信,Token口令授权,Web端与客户端通信。异步请求,面向接口编程。
Stars: ✭ 14 (-57.58%)
Mutual labels:  ssm
blog
基于springboot的个人博客,技术栈:mybatis,mysql,elasticsearch,thymeleaf等
Stars: ✭ 23 (-30.3%)
Mutual labels:  ssm
wenda
使用SSM框架搭建仿知乎问答社区
Stars: ✭ 78 (+136.36%)
Mutual labels:  ssm
seckill parent
基于springboot+springcloud的高并发和商品秒杀项目,通过redis,rabbitmq等技术实现秒杀的高并发。
Stars: ✭ 59 (+78.79%)
Mutual labels:  seckill
actions
A Collection of GitHub Actions
Stars: ✭ 91 (+175.76%)
Mutual labels:  ssm
DIMS
🐟 数据库系统原理课程设计,Drug Inventory Management System,基于 SSM 框架的医院药品库存管理系统。
Stars: ✭ 49 (+48.48%)
Mutual labels:  ssm
ssmenv
A tool to use Amazon EC2 Systems Manager (AWS SSM) Parameter Store as environment variables
Stars: ✭ 16 (-51.52%)
Mutual labels:  ssm
ssm
Java企业级电商项目
Stars: ✭ 34 (+3.03%)
Mutual labels:  ssm
helm-ssm
Injects values from AWS SSM parameters on the values.yaml file
Stars: ✭ 43 (+30.3%)
Mutual labels:  ssm
Mashibing High Concurrency
马士兵高并发,Java基础视频学习源码
Stars: ✭ 155 (+369.7%)
Mutual labels:  high-concurrency
shop
商城,基于SSM开发的JavaWeb项目
Stars: ✭ 33 (+0%)
Mutual labels:  ssm

Java高并发秒杀系统

本项目于2018年1月16日完成

项目使用技术

项目使用了spring + springmvc + mybatis + mysql + redis技术,并且用了少数第三方jar包

数据库连接池用的是c3p0,前端为bootstrap框架

项目坏境

jdk1.8 + eclipse + window8.1 + tomcat8.5

项目地址

已放在阿里云公网上 点我即可

项目思路

1:首先用户先进入所有商品的列表页

2:然后点击要秒杀商品的链接

3:先获取cookie,看cookie是否有用户的手机号,如果没有弹出窗口,填写手机号

4:如果商品秒杀的开始时间还没有到达,则在界面倒数。如果秒杀已经结束,则在界面显示已经结束。

5:如果秒杀正在进行,暴露接口的地址。为了防止有用户提前模拟秒杀url地址。所以用了spring的DigestUtils.md5DigestAsHex md5进行验证。验证规则 salt + seckillId + salt 来生成md5

6:然后用户可以点击秒杀的按钮进行秒杀。发送id,md5,phone信息,后端验证id号和md5,如果报错则给用户提示,否则进行service层的事务。

高并发优化思路(Important)

1:静态资源 如bootstrap,jquery等框架 用服务商提供的cdn加速

2:用redis缓存。比如快到秒杀开启的时间,一般用户都会一直刷新。那么前端就会到后台数据库中一直查询秒杀开启时间,然后和当前时间的对比,无疑加大了数据库的压力。

因为这条商品记录只需要读的数据,不需要改的数据。不要去mysql中去读取,放到redis缓存中去。

具体流程如下:

get from redis 
if (null) {
	get from mysql
	put into redis				
} 

ps. 序列化和反序列的时候用到了第三方的框架protostuff,这个序列化更快而且数据大小可以达到原来的1/5 - 1/10左右

3:执行秒杀的是一个事务,先将商品的库存减少,然后再插入购买的明细记录。只要一个事务还没有完成,mysql的行级锁就会一直锁着这条记录,这又造成了慢。并且还会有网络延迟和java的gc

首先可以先插入购买的记录在将商品的存库减少,插入购买记录一般很少冲突,然后在判断。

并且可以把客户端的逻辑放到服务端来执行,即使用存储过程(虽然Alibaba手册中并不推荐使用存储过程)

重点难点

1:首先我说下spring的声明式事务,我觉得是一大重点。这次我用的是注解的方式@Transactional,之前我一直以为只要有错事务就会进行回滚。自从做了这个项目之后我才知道,spring的事务只有在运行期出现异常才会进行回滚

2:第二个重点就是这个项目我学到了Data Transfer Object层(DTO层)。 我之前在service层返回的就是true或者false或者数据,没有包装成一个类。这次包装成为一个类,然后返回json给前端,这样也许比较好交互吧,分工明确,效率也高。

3:第三就是restful风格的url地址,非常的优雅

项目展示

商品详细列表

Image text

验证列表

Image text

计时

Image text

开始

Image text

结束

Image text

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].