秒杀商城项目总结

秒杀商城项目总结

1.多模块项目的搭建

https://blog.csdn.net/shadowcw/article/details/88894967
先创建父工程,再在父工程中创建子模块
主要流程:在父工程的pom文件中声明子模块,在子模块的pom文件中声明父工程,然后子模块间相互依赖

2.数据库设计

本项目共4张表:商品表,秒杀项目表,订单表,用户表
其中订单表设有字段product_id, seckill_id, user_id用以关联其他3张表

3.MyBatis逆向工程

  1. 加入MyBatis逆向工程插件依赖
  2. 添加逆向工程配置文件(配置数据库驱动信息,生成pojo类,mapper映射文件,mapper接口的位置,选用的表)
  3. 运行插件即可
  4. Example类的使用:https://blog.csdn.net/biandous/article/details/65630783

4.分布式id

本项目采用雪花算法,既能保证不重复又能保证递增,使用时只需指定数据中心和机器标识即可

5.项目流程

检查该用户是否已秒杀过该商品——若没秒杀过,检查该商品是否可以秒杀——如果可以秒杀,则减秒杀库存和商品库存——生成订单记录——异步向用户发送邮件告知其支付——如果规定时间内未支付则取消订单
整个流程是一个事务

6.RabbitMQ实现异步邮件发送

生成订单记录后,向RabbitMQ发送一条消息(包含订单号),利用消息确认机制来保证消息投递成功
另外开一个服务用来监听队列,收到消息后通过JavaMail来发送邮件告知用户进行支付

7.RabbitMQ死信队列实现超时取消订单

生成订单记录后,还要向向RabbitMQ发送一条带有TTL的消息(包含订单号),并且给接收的消息队列设置一个死信队列,消息到达过期时间后,会自动进入死信队列
另外开一个服务用来监听该死信队列,收到消息后去查询该订单是否已支付,如果没支付则将订单状态改为已取消

8.JMeter进行压力测试

下载JMeter后,配置CSV文件,请求接口,请求参数,每秒并发多少次后即可进行压力测试

9.分布式锁防止超卖

针对高并发请求,为了防止超卖现象,需要对临界区域上锁,这里分别使用Redisson和Curator来实现Redis和Zookeeper分布式锁

10.Shiro实现用户登录

整合Shiro来实现用户登录

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值