目录
一、需求
1.1 原则
单个账号单个商品仅限购买一次(使用主键冲突来实现)
1.2 前台展示
PC端:按单品区分
倒计时:结束时间和即将开始时间
1.3 后台设置内容
开始时间、结束时间(PC端按单品设置、移动端按时间段设置)
商品库存数量设置
1.4 功能逻辑
库存锁定(拖取商品后,原商品库存减少)
库存返还(活动结束后,剩余库存返还至原商品)
同一个用户购买一次后变更立即购买按钮,移除或变灰不可点
5.并发优化
使用redis缓存数据优化,超时的基础上一致性维护
调整数据库操作语句顺序
事务SQL在数据库中执行(存储过程),因为本地执行sql速度很快,减少GC的影响
二、使用工具
maven(构建项目),git(版本控制工具),myeclipse(集成开发环境),junit(测试)
三、技术栈
spring,springmvc,mybatis(框架),mysql(数据库)
redis(缓存),bootstrap(页面),html,css,javascript,jquery(前端)
四、数据库设计
CREATE TABLE `seckill` (
`seckill_id` bigint(20) NOT NULL auto_increment COMMENT '商品库存id',
`name` varchar(120) NOT NULL COMMENT '商品名称',
`number` int(11) NOT NULL COMMENT '库存数量',
`create_time` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT '创建时间',
`start_time` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT '秒杀开启时间',
`end_time` timestamp NOT NULL default '0000-00-00 00:00:00' COMMENT '秒杀结束时间',
PRIMARY KEY (`seckill_id`),
KEY `idx_start_time` (`start_time`),
KEY `idx_end_time` (`end_time`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT&#