秒杀系统01-大概框架

这是一个秒杀系统的项目实战,目的很简单,用户传入请求,即购买请求,服务端响应这个请求,然后对应的数据库减去该值。但是要保证高并发情况下还能正常运行就不是这么简单了,我们需要引入分布式锁,还有消息中间件,在mysql上还要做优化,分布式情况下要保证商品的唯一id,redis要用来实现数据缓存。其实就做这个项目就是想将自己学到的知识都整合起来

 

首先是最基本的不考虑高并发情况下的情形:

一:想要进行秒杀首先要获取参与秒杀的商品吧,我是基于mvc开发的,也是以这个作为指导。

那么我们首先要有controller层,用于接受用户的请求,这就是获取商品列表的方法:

 当获取了商品后,我们再把商品放入modelMap中,便于前端获取该项目。不过,在这之前,要具体实现获取商品列表这个方法。也就是在controller层调用service去真正地处理这个请求,因为这里controller只是用来展示的。

当然,也很简单,调用该方法即可

下面是sql查询语句:

 假如是要参与秒杀的商品,首先,该商品需要参与这个活动,其次,还在秒杀时间范围内。此sql语句就是判断是否参加和是否过期的语句

然后,我们秒杀一件商品还需要知道商品的详情信息吧,依然是controller调用service,service调用mapper方法。

其实就变了一点,就是这次是条件查询了

 

 

 

接下来,就正式开始秒杀了,秒杀的核心逻辑如下:

这是controller,具体的秒杀行为去了killservice

这一段就是真正的秒杀行为了,首先,要判断用户是否进行过秒杀了,我想的是每个用户只能秒杀一件,所以你不能重复秒杀,然后,会获得秒杀的商品的详情信息,在设置商品秒杀的数据表里有一行是canKill,就是判断是否能够进行秒杀的,如果为1,则能秒杀,为0,则不能秒杀,其实就是判断是否秒杀的时间过了或者还没到。如果可以进行秒杀的话,那么库存减一,如果扣除成功了,就生成这个秒杀订单,然后通知用户秒杀成功了,至于为什么要这么做,就是为了提高对用户的响应速度,不然如果大量请求进来,要么数据库崩掉,要么用户在这里等待,直到处理完了才会返回结果,这样的话用户的体验就会不好,至于消息队列具体是怎么应用的,等到后面来用rabbitmq具体实现,这里只是大概实现该功能。

最后返回一个结果给前端,前端渲染后会返回给用户,具体就是这样,大体框架有了,下面就是具体补细节了

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值