首页 > 分布式锁与事务
头像
六年JAVA程序员
发布于 09-10 09:58 浙江
+ 关注

分布式锁与事务

注释:本地锁和分布式锁的区别

业务层面

锁从业务层面分为分布式锁和本地锁

1、 本地锁:只对当前节点的业务产生影响

2、 分布式锁:对所有使用该分布式锁的节点都产生影响

架构层面

1、 如果当前服务只部署一个服务节点,并且该服务节点操作的资源都是独有的,那么就可以使用本地锁解决资源争抢问题

2、 如果当前服务部署一个/多个服务节点,但是该服务节点操作的资源可以被其他服务节点操作,那么就需要使用分布式锁解决资源争抢的问题

资源层面

1、 本地锁只对当前节点的独有资源有效

2、 分布式锁对所有节点的资源都有效

1、接口幂等性

作用:幂等性防止接口重复提交

实现接口幂等性的方式:

方式一:通过令牌校验的方式

方式二:通过分布式锁的方式

2、分布式事务和分布式锁

当一个资源可能被争抢时,就需要使用分布式锁,防止超卖/重复提交现象发生

例如:假如支付接口,需要在钱包中扣钱;此时,支付接口所在的服务有两个节点,用户点击两次支付,两个接口都会执行支付操作;此时钱包就会被争抢,需要使用分布式锁,防止钱包金额变成负数

在购买完成后,订单表会自增加一条记录,商品表记录会减少商品数量,钱包会减少金额,此时就涉及到分布式事务

分布式事务和普通事务的原子性要求是一样的:要么全部成功,要么全部失败;此时当业务发生异常时,就需要全部回滚;

3、被争抢的资源如何分类

资源分为个人资源和公有资源

如果是用户个人的资源需要,先锁定预扣除

如果是公用的资源,需要先完成前置逻辑,再锁定扣除;如果先行逻辑执行完成,公用资源消耗完毕或者失败,需要补偿个人资源

首先指定一个场景

假设一个商城系统发起一个秒杀活动,活动中的商品是手表,共有100块,每块秒杀价50元

此时共有10000个用户发起秒杀,每个用户有1-100元范围的资产,有百分之90的用户资产低于50元

图一:此时所有的用户争

全部评论

(0) 回帖
加载中...
话题 回帖

近期热帖

近期精华帖

热门推荐