不知道分布式锁,怎么挑战大厂offer

疫情结束后,能进一个靠谱的、风险承担能力强的公司也许是大多数人的想法了。成长要趁早,当我们自身能力提升后,字节跳动、腾讯、阿里等这些不仅鼓励员工在家办公,还能领全薪的公司正向我们招手。

比如我是面试官,我先简单问几个哈!

为什么要用分布式锁?

分布式锁的释放,有什么坑?

锁的过期时间怎么设置?设置多长合适?

分布式锁有多少种实现方式?

redis setnx 会带来哪些问题?

基于zookeeper做分布式锁怎么实现?

……

问题总是层出不穷,有没有不变应万变的方法。 答案是肯定的,下面是技术大牛孙玄在分布式锁的分享

01 /  分布式锁的本质

提到分布式锁,有很多实现,比如 Redis 分布式锁、ZooKeeper 分布式锁、etcd 分布式锁等。 但是选择哪个更适合你的项目? 在《 基于 CAP 模型设计企业级真正高可用的分布式锁 》一文深入分析过分布式锁的哲学本质,以及如何结合场景来选择合适的分布式锁。 分析业务场景,得到业务本质,就是架构思维。 思维最终是需要落地的,接下去分享一下对分布式锁的思考和实践。

锁的本质是对共享资源的处理,表现很多,有以下作用:

1

业务协调

2

业务幂等(需配合业务代码实现)

3

共享资源竞争

在单体应用时代表现为同步块 lock。随着需求和业务量的增长,系统走向了分布式、微服务时代,多服务和多实例下的应用无法使用本地锁进行控制资源共享。此时就出现了分布式锁,分布式场景下对分布式锁的要求如下:

1

强一致性

2

服务高可用、系统稳健

3

锁自动续约、自动释放

4

业务可重入

03 /  分布式锁存储选型及场景

目前常见分布式锁的实现有 Redis、ZooKeeper、etcd 等,各维度指标对比如下:

一致性算法(CAP):在分布式场景下,CAP 理论是很多架构设计的指导思想。CAP 思想下有两个分支 CP 与 AP;CP 模型不管什么情况下,都要求各服务之间的数据一致;AP 模型高可用下的数据最终一致性。

虽然锁原本要求强一致性 CP 模型,但 AP 模型分布式锁的使用取决于业务场景对脏数据的最大容忍度,比如 SNS 场景,就可以使用 AP 模型分布式锁,从而在性能上有很大的优势。CP 模型仍然保持原有的一致性要求,保证了业务资源串行竞争,更加适合于金融交易场景的强数据要求。Redis 自身无一致性算法来保证多节点的数据一致性,所以是 AP 模型;ZooKeeper、etcd 都有一致性算法,都是 CP 模式。

高可用:Redis 是一个 K-V 存储,使用主从模式进行集群,Redis Cluster 底层也是主从模式的组合,性能高,保证了高可用。ZooKeeper 是 Tree 的数据结构,节点要求 N + 1,N 必须大于 2,通过 ZAB 选举保障主的可用。etcd 是一个 K-V 存储,节点要求 N + 1,N 必须大于 2,通过 Raft 选举保障主的高可用。

03 /  AP 模型的Redis分布式锁实现

04 /  CP 模型的etcd分布式锁实现

etcd 有 V2 和 V3 两种接口: V2 接口可以使用 http 直接访问,天然客户端物理解耦,但需要自动续租保证锁的完整性。 V3 接口默认 grpc 形式,是长链接机制,天然续租,但 grpc 有客户端依赖要求。 可以根据场景要求,适度选择合适版本接口。

锁参数有:

1

prevExits: 检查是否存在,true: 新增, false: 更新;

2

prevIndex:检查上一个的key,即操作返回的 uuid;

3

prevValue: 检查上一个的值;

Linux curl 锁操作:

1

取锁: curl http://ip:port/v2/keys/锁名 -XPUT -d ttl=10 -d prevExits=false -d value=锁

2

续租: curl http://ip:port/v2/keys/锁名?prevValue=锁值 -XPUT -d ttl=3 -dprevExits=true -d refresh=true

3

释放锁: curl http://ip:port/v2/keys/锁名?prevValue=锁值 -XDELETE

相信看到这里已经对分布式锁有一个系统的概念了,也对孙玄团队技术能力有了一定认识。

同是技术人,我介绍下孙玄:江湖人称玄姐,曾作为 58 集团技术委员会主席,转转首席架构师/技术委员会主席,带领公司技术从 0 到 10,并成功培养了一批技术精英。

现在,孙玄创办了服务技术人的奈学教育科技有限公司。他和我讲了他的创业初心,我特别认同,也很支持他通过 硬实力来让大家真正学到一些企业级的,能落地的架构技术

现在,孙玄联合沈剑打造了《架构师训练营》和《百万架构课程》两个重量级课程。文末扫码添加课程顾问,会有比较详细的课程介绍和职场建议,都很真诚。

左右滑动查看更多

贴下两个课程的大纲,由于内容太细,无法全面展开,技术同学可以对照着整理自己的知识体系。 系统的知识才是我们可以掌握的知识

早期扫码有福利:

  1. 免费 领取 孙玄 授课视频

  2. 免费 领取课程大纲

  3. 孙玄 好友,共同探讨架构问题

两次扫码加小助教,领取资料

感谢点在看支持技术创业 :point_down:

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章