分布式锁相关应用场景

1、保证数据正确性,比如抢红包、秒杀下单等场景,需要保障不会出现超卖等问题。

因为红包、秒杀商品等场景下,只能被先到达的人才能抢到,所以要顺序执行库存扣减等操作,这样就需要限制同一时间只能有一个线程或进程对资源进行访问和修改。

分布式锁可以确保在多个副本部署服务或高并发的情况下,同一时间只有一个线程或进程能够执行相应的业务代码,从而避免数据不一致的问题。

2、避免重复执行某些操作,浪费资源。比如多个客户端可能都执行发送短信通知,但是需要保证这个通知只被发送一次。

这些操作可能是非幂等性的,即执行多次会产生不同的结果。为了避免重复执行这些操作,可以使用分布式锁来确保同一时间只有一个客户端能够执行该操作。

比如,业务逻辑可能包括以下步骤:

(1)先获取分布式锁;

(2)获取到锁后,先查询是否已发送短信通知,

(3)之后如果查询到未发送状态后才发送,

(4)发送成功后更新发送状态到数据库中。

这样只有第一次执行该逻辑时才能成功发送,此处应用分布式锁能避免因并发操作导致的重复发送问题。

类比单个服务中,操作全局共享变量会先加锁避免并发修改资源造成错误,分布式锁是用于分布式环境下避免并发修改资源导致破坏数据正确性,用于控制某个资源在同一时刻只能被一个应用所使用。

如下图所示[2]:

</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化信息化智能化解决方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值