分布式锁

1. 什么是分布式锁?

了解多线程的童鞋一定也知道锁的概念的,而多线程是针对单个服务而言的。对于多个服务而言,多线程中的锁显然是没啥意义的。于是,就有了分布式锁,它是针对多个服务之间有序合作的。

2. 为什么要用分布式锁?

因为互联网应用中为了应对高并发采用了负载均衡的策略,多个服务之间要有序合作,就需要引入分布式锁了。

举个栗子,小明在超市买了根雪糕,付账时网络信号不好,也没有提示支付成功或失败。这时候,店家要求再支付一次,于是小明又支付了一次。结果呢,其实第一次支付请求已经发出去了,因为支付了两次,负责处理支付业务的两个服务都收到了该请求,这时候要处理的其实是一个订单而不是两个,对吧?没有分布式锁的存在,这种问题几乎是无解的。

3. 分布式锁有哪些实现方式?

(1)用数据库锁实现:建一张表,里面有一个标志位字段,标识了是否存在锁状态。当某一个服务需要执行某个操作时,就更新该锁字段的状态。

(2)用redis实现:redis本身支持key-value的形式,执行某个操作前更新该锁的value值即可(可以设置超时时间来避免死锁)。

(3)用zookper实现:通过在一个目录下创建临时节点的方式来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值