分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

14 | 答疑篇:分布式事务与分布式锁相关问题

需要通过队列维持进程访问共享资源的先后顺序
多个节点对应的客户端完成事务
问题追问3
问题追问2
问题追问1
流程回顾
问题追问3
问题追问2
问题追问1
区别于三阶段提交协议
流程回顾
基于Redis实现分布式锁
基于ZooKeeper实现分布式锁
分布式锁
分布式互斥
三阶段提交协议(3PC)
两阶段提交协议(2PC)
总结
分布式锁
分布式事务
分布式技术原理与算法解析

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。
到目前为止,“分布式技术原理与算法解析”专栏已经更新 13 篇文章了,主要与你介绍了“分布式起源”“分布式协调与同步”和“分布式资源管理与负载调度”。
在这里,我首先要感谢你们在评论区留下的一条条精彩留言。这让我感觉到,你们对分布式技术的浓厚兴趣,以及对我和对这个专栏的支持。这不但活跃了整个专栏的氛围、丰富了专栏的内容,也让我备受鼓舞,干劲儿十足地去交付更高质量的文章。
比如,@xfan、@Jackey 等同学积极思考问题,并对文中有疑惑的地方结合其他资料给出了自己的思考和建议;再比如,@zhaozp 、@静水流深等同学,每次更新后都在坚持打卡学习;再比如,@约书亚等同学针对分布式事务提出了非常好的问题,@每天晒白牙等同学对文中内容进行了非常好的总结。
这些同学有很多,我就不再一一点名了。感谢你们的同时,我也相信,积极参与并留言也会帮助你更深入地理解每一个知识点。所以我希望,你接下来可以多多留言给我,让我们一起学习,共同进步。
留言涉及的问题有很多,但我经过进一步地分析和总结后,发现针对分布式事务和分布式锁的问题比较多,同学们的疑惑也比较多。
确实,这两大问题属于分布式技术的关键问题。因此,今天的这篇答疑文章,我就围绕这两大问题来进行一次集中的分析和回答吧。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文总结了分布式技术专栏作者聂鹏程在回顾之前专栏内容的基础上,重点解答了关于分布式事务和分布式锁的相关问题。在分布式事务方面,详细解释了两阶段提交协议(2PC)和三阶段提交协议(3PC)的区别,以及它们在解决同步阻塞和数据不一致性问题上的作用和局限性。同时,回答了读者关于3PC中参与者返回Yes或No消息的依据,以及为什么3PC不会出现单点故障问题的疑问。在分布式锁方面,提到了基于ZooKeeper和基于Redis实现分布式锁的问题,以及对于基于Redis实现分布式锁是否需要通过队列来维持进程访问共享资源的先后顺序进行了深入探讨。整体而言,本文内容涉及分布式技术中的关键问题,对读者理解分布式事务和分布式锁具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • piboye
    完全看不懂3pc存在的意义,完全没解决2pc的问题,消息更多,失败概率不是更高,而且还会出现不一致的情况

    作者回复: 举一个例子,假如分布式集群中(假设10个节点),写数据到磁盘,如果数据写到磁盘后再撤回,这样磁盘读写开销大,且需要的时间开销也会增多,如果频繁发生上述操作,磁盘IO可能会扛不住。3PC的意义其实就是在数据写磁盘前进行了一个预确认,确认集群中所有节点都可以写的情况下,才真正写数据,减少了部分节点故障或不可写的情况下导致的多个节点上磁盘IO的读写。这是3PC加入预提交阶段的主要意义。

    2020-05-06
    4
    9
  • 王涛
    本节课程,让我明白了之前好多没主意到点,开扩了思维。

    作者回复: 加油,希望你在本课程中学到更多的东西

    2020-03-29
    4
  • 王涛
    学习完这节课程,了解到了很多分布式中细节的内容。给作者点赞。

    作者回复: 加油,希望你在后续的课程中能学到更多知识

    2020-03-29
    1
  • xfan
    要动手实际将现有的系统改造为分布式系统,才能明白很多细节
    2019-10-26
    1
    8
  • 随心而至
    我觉得关于redis实现分布式锁的那段,可以类比着Java里面原子类和AQS来理解,一个是不断尝试CAS直到成功,一个是多线程访问共享锁,拿不到就放到链表中排队。
    2019-10-23
    1
    6
  • 南国
    为什么在setnx的源码中没有找到队列相关的实现呢?
    2020-04-15
    1
  • leslie
    其实单独去提redis我觉得可能有点片面:不同的中间件干不同的事情;单独去用单一数据库个人认为有点窄了,这回造成;分布式就是传统CS或BS的简单升级。我们在谈论它的优点时忘了去忽略了它只是系统中的一部分而已。 老师的文章跟到现在:由于在极客时间有其它学习压力非常大的课程,基本上有些东西仅仅只能暂时保持学习了。不过关于分布式调度其实个人觉得是这块的核心:调度的核心其实就是算法,可是算法都做不到完美,其实都是优劣互补中使用中间件存储。 其实我现在有个不恰当的比喻,但又可能又某些状态下合适;分布式其实一定程度上就是Kubernets,而Google再它的下一代这个里面有用了mvcc去解决锁的问题。其实分布式和传统的CS/BS是相互依存的关系:优势互补才能真正发挥系统的优势。
    2019-10-23
    1
  • 随心而至
    关于redis 实现分布式锁,我觉得可以类比Java里面原子类和AQS,一个不断尝试cas直到成功,一个多线程尝试获取共享锁,拿不到就排队。
    2019-10-23
    1
    1
  • Hurt
    打卡 打卡
    2019-10-23
    1
  • ky
    既然2PC和3PC都存在性能问题和数据不一致的隐患,那现在还有应用在生产环境的例子吗?
    2021-10-26
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部