秒杀业务Demo

秒杀业务Demo,第1张

商城秒杀业务的性质是高并发

我们的基本数据

并发1~2万

同时在线4~5万用户

日活跃用户10万

学习完秒杀业务,我们能具备处理一般高并发业务的基本逻辑

下面我们要做的是准备工作

除了基本的CRUD之外

我们还要做一些缓存预热工作

秒杀模块是mall-seckill,这个模块 *** 作的数据库是mall-seckill

数据库中包含秒杀spu信息和秒杀sku信息以及秒杀成功记录

我们要利用Quartz周期性的将每个批次的秒杀商品,预热到Redis

所谓"预热"就是将即将出现高并发查询的数据提前保存在Redis中

我们的业务只是将每个商品的库存数保存在Redis即可

mall-seckill-webapi项目

创建mapper包,创建SeckillSpuMapper

代码如下

SeckillSpuMapperxml文件添加内容

创建包serviceimpl

包中创建SeckillSpuServiceImpl实现ISeckillSpuService

创建controller包

创建SeckillSpuController类

下面可以测试

NacosRedisSeata

服务需要依次启动

LeafProductpassportseckill

测试10007秒杀端口号

正常配置登录JWT

我们将秒杀的商品Spu列表查询出来

当用户选择一个商品时

我们要将这个商品的sku也查询出来

也就是根据SpuId查询Sku的列表

创建SeckillSkuMapper

SeckillSkuMapperxml文件添加内容

根据给定时间查询出正在进行秒杀的商品列表

首先保证数据库中的seckill_spu表的数据正在秒杀时间段(检查数据,如果不在秒杀时间段,将结束时间后移如2024年)

SeckillSpuMapper添加方法

SeckillSpuMapperxml

这次查询主要是因为后面我们要学习的布隆过滤器,方式缓存穿透使用的

SeckillSpuMapper,添加一个方法

SeckillSpuMapperxml

我们要使用Quartz调度工具完成任务调度

按照秒杀的批次在秒杀开始前很短的时间内进行进行缓存预热工作

例如每天的12:00 14:00 16:00 18:00进行秒杀

那么就在 11:55 13:55 15:55 17:55 进行预热

1我们预热的内容是将参与秒杀商品的sku查询出来,根据skuid将该商品的库存保存在Redis中

2在秒杀开始后,当有用户查询秒杀商品后,将该商品保存在Redis中,还要注意防止雪崩(有效时间添加随机数)

3(待完善)在秒杀开始前,生成布隆过滤器,访问时先判断布隆过滤器,如果判断商品存在,再继续访问

利用Quartz将库存和随机码保存到Redis

1创建Job接口实现类

2创建配置类,配置JobDetail和Trigger

在seckill包下创建timerjob包

包中创建SeckillInitialJob类

代码如下

上面的类中的代码只是编写了

我们需要在Quartz中触发才能生效

我们创建timeconfig包

包中创建QuartzConfig类编写Job的触发

启动NacosRedisSeata

项目启动Leafproductseckill

上面章节我们完成了缓存预热

下面要根据SpuId查询正在秒杀的商品

和普通的SpuId查询商品详情相比

它的业务判断更复杂

1布隆过滤器判断(后期完成)

2判断商品是否在Redis中

3判断要购买的商品是否在秒杀时间段内

4如果一切正常在返回详情信息前,要为url属性赋值,其实就是固定路径+随机码

在SeckillSpuServiceImpl类中编写新的方法

上次课完成了查询根据SpuId查询Detail详情的业务逻辑层

下面开发控制层

SeckillSpuController添加方法

启动测试

NacosSeataRedis

LeafProductSeckillpassport

>您好,要保证用户的时间一致,前端商城的秒杀活动可以采用以下几种方法:
1 采用服务器时间来保证时间的一致性,即所有用户都使用服务器的时间,以确保每个用户的时间一致。
2 采用客户端时间来保证时间的一致性,即所有用户都使用客户端的时间,以确保每个用户的时间一致。
3 采用网络时间来保证时间的一致性,即所有用户都使用网络时间,以确保每个用户的时间一致。
4 采用定时器来保证时间的一致性,即所有用户都使用定时器来记录时间,以确保每个用户的时间一致。
此外,还可以采用一些技术手段,如采用缓存技术来减少服务器的压力,以确保每个用户的时间一致。
总之,前端商城的秒杀活动可以采用以上几种方法来保证用户的时间一致,以确保活动的顺利进行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10757937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存