基于秒杀系统的企业开发设计思考
创始人
2024-12-27 01:06:28
0

一、需求分析

需求描述为实现某商品秒杀活动,结果为商品库存为0,订单数量和商品原有库存数量相等,即保障系统数据一致性同时,保障系统稳定性

二、流程设计

三、数据库设计

本次示例仅涉及商品表、订单表,这里分享数据库设计原则:

1、第一范式 即每个列遵循原子性 举例:人的多个属性不能都放在一列

2、第二范式 即每个表遵循模块化 举例:订单模块和产品模块分开,即同一张表只能依赖一个主键(或负荷主键)

3、第三范式 即每个列遵循冗余性 举例:单价和总价不应该同时出现,班级和老师不应该同时出现

总结:需求>性能>范式,为了性能/需求,该冗余还是得冗余;为了成本,至少遵循第三范式

四、缓存设计

key设计规范

以业务名为前缀(防止key冲突),用冒号分隔,比如业务名:模块名:id

五、设计方案对比

方案一

利用数据库完成秒杀系统,其中查询/更新库存,需结合数据库事务和排他锁进行实现

方案二

利用数据库和redis完成秒杀系统,其中查询/扣减库存,结合分布式锁和redis原子性递减操作实现

方案三

利用数据库和redis完成秒杀系统,其中查询/扣减库存,利用redis lua操作实现

六、压测工具及数据分享

1.压测工具ab

常用参数

-k Use HTTP KeepAlive feature

-t timelimit Seconds to max. to spend on benchmarking

-n requests Number of requests to perform

-c concurrency Number of multiple requests to make at a time

2.压测环境

压测环境:cpu:2核 内存:2G(注:不包括中间件带来的资源消耗)

执行命令:ab -k -c 100 -t 10 http://localhost:8089/seckill-service/doSeckill?productId=1

3.压测数据

方案一

Requests per second: 716.40 [#/sec] (mean)

Time per request: 139.587 [ms] (mean)

方案二

Requests per second: 827.66 [#/sec] (mean)

Time per request: 120.822 [ms] (mean)

方案三

Requests per second: 2955.46 [#/sec] (mean)

Time per request: 33.836 [ms] (mean)

七、mysql锁和redis常见问题分享

mysql锁-----行锁的类型

1、共享锁(Shared Lock):也叫 S锁/读锁,允许多个事务同时读取同一资源

2、排它锁(Exclusive Lock):也叫 X锁/写锁,只允许一个事务对资源进行写操作

redis常见问题

1、缓存穿透即查询一个不存在的数据,即缓存和数据库都不存在

解决方案:布隆过滤器(借助redisson的bloomFilter),存放所有key,不存在直接拦截

注:bloomFilter.tryInit参数为元素空间大小、误判率 ,其中误判率越低,占用空间越大  

2、缓存击穿即某个热点数据失效,导致数据库压力剧增,即缓存不存在,数据库存在

解决方案:a.对热点数据的数据库操作加锁(借助redisson的lock) b.热点数据不过期

3、缓存雪崩即所有缓存数据同时失效,即缓存不存在,数据库可能存在/可能不存在

解决方案:a.失效时间随机值 b.缓存分布式

八、源码分享

seckill-service: 秒杀系统示例

相关内容

热门资讯

透明私人局"德州之星... 相信很多朋友都在电脑上玩过德州之星ai吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带来...
透视有挂!wepoke辅助透视... 透视有挂!wepoke辅助透视有挂外挂透明挂辅助方法(透视)原来真的是有挂的(2022已更新)(哔哩...
透明挂透视(wepoke免费)... 《wepoke免费软件透明挂》是一款多人竞技的wepoke免费辅助透视游戏,你将微扑克对手来到同一个...
透视脚本"德扑ai软... 透视脚本"德扑ai软件购买"(透视)辅助透视(有挂教学)-哔哩哔哩;德扑ai软件软件透明挂是一个全新...
透明攻略(wpk安卓)软件透明... 您好,wpk安卓这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游...
透明了解!德扑之星概率有挂透视... 您好,德扑之星概率这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
透明科技"德扑之星带... 《德扑之星带入软件透明挂》是一款多人竞技的德扑之星带入辅助透视游戏,你将微扑克对手来到同一个战场,为...
透视代打(鱼扑克发牌规律)外挂... 您好:鱼扑克发牌规律这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特...
透明神器!WPK漏洞有挂透视辅... 透明神器!WPK漏洞有挂透视辅助教程(透视)原来确实是有挂的(2024已更新)(哔哩哔哩);德扑锦标...
透视脚本(wepoke脚本)外... 透视脚本(wepoke脚本)外挂软件透明挂辅助助手(2023)原来是真的有辅助挂的(2021已更新)...