15 | 分布式事务串讲:重难点回顾+思考题答疑+知识全景图
王磊
该思维导图由 AI 生成,仅供参考
你好,我是王磊,你也可以叫我 Ivan。
今天这一讲是我们这门课的第二个答疑篇,我会带你回顾第 9 讲到第 14 讲的主要内容,集中解答留给你的思考题,同时回复一些留言区的热点问题。这几讲涉及的也是数据库的核心话题“事务”,咱们一定得学扎实了。
第 9 讲:原子性提交协议
使用 TCC 协议时,由应用系统负责协议的实现,数据库没有额外工作。所以,TCC 更加灵活,但对业务的侵入性更高。反之,使用 2PC 协议时,主要靠数据库来实现,应用层工作很少,所以业务侵入少,但是存在同步阻塞、单点故障和数据不一致这三个问题。
针对 2PC 协议的这些问题,我又介绍了两种改进型协议。一种是 Percolator 模型,在 TiDB 和 CockroachDB 中有具体落地。另一种是 GoldenDB 中实现的“一阶段提交”协议。它们都较好地解决了单点故障和数据不一致的问题。而有关同步阻塞带来的高延迟问题,我们没有展开,而是留到了第 10 讲。
这一讲的是思考题是:2PC 第一阶段“准备阶段”也被称为“投票阶段”,和 Paxos 协议处理阶段的命名相近,你觉得 2PC 和 Paxos 协议有没有关系,如果有又是什么关系呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了分布式事务的核心概念和相关优化技术,涵盖了原子性提交协议、Paxos Commit协议、2PC的延迟优化技术等内容。作者在第9到第14讲中重点讨论了TCC和2PC两种原子性协议,以及针对2PC协议的改进型协议,以及分析了2PC的延迟优化技术和读写冲突的解决方案。此外,还探讨了乐观协议和悲观协议的并发控制技术,以及MVCC与乐观协议、悲观协议的关系。整体而言,本文对于想要深入了解分布式系统的读者具有一定的参考价值。文章内容涵盖了分布式事务的重要概念和技术特点,尤其关注了分布式数据库在原子性和隔离性方面的挑战和突破,以及NewSQL风格分布式数据库在2PC的优化方面取得的进展。对于对分布式数据库的事务处理感兴趣的读者来说,本文提供了深入了解分布式事务的良好起点。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式数据库 30 讲》,新⼈⾸单¥59
《分布式数据库 30 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 扩散性百万咸面包老师还想问一下:关于TiDB 4.0 既然换成了悲观事务,那么引入了获取悲观锁的成本。在新的悲观设计下,写操作还是跟原来一样,是被缓存在TiDB节点,然后在commit的时候再真正写入吗?也就是说,换成悲观事务,只是为了提前获取悲观锁,保证事务提交一定成功,而并不是像传统悲观事务,遇到写操作就立刻转成KV写入?
作者回复: 第一个问题,TiDB的悲观锁就是在原有乐观锁上做加法,详细内容建议复习课程内容再理解下。 第二个问题没有完全理解:(,但可以说明的是,写操作缓存和悲观协议没有必然的关系。
2020-09-15 - 扩散性百万咸面包这里我问老师个问题: 对于2PC的优化,老师说有TiDB的buffer write,CRDB的Pipeline和并行事务。但是我觉得这buffer write和pipeline并不是对2PC的优化,这是对于事务中的写操作的优化。事务中的写操作触发的是共识协议如Raft等用来同步对于这一数据项的状态,因此对它的优化降低了N轮共识算法。但这和2PC不是一个概念,2PC是事务提交的时候达成原子性的机制。老师,这样理解对吗?
作者回复: 嗯,关于你提到的“buffer write和pipeline并不是对2PC的优化,这是对于事务中的写操作的优化”,我觉得这样解释不太恰当,因为写操作本身也是2PC的一部分。一个过程总是可以划分成若干片段,如果和片段有关就和过程无关,那似乎就没有和整个过程有关的的东西了,是吧?:) 或者你可以倒过来看这个问题,分布式数据库下有与分布式事务完全无关的写操作吗?似乎没有,就算是那些只涉及一个分片的事务,处理上也是和单机事务有差异的。
2020-09-15 - Jowin老师这张图太赞了,基本看明白了,把前几章能完全串来了。2021-03-052
- 槑·先生TiDB得隔离级别到底属于什么呢2022-10-13归属地:湖北
- 吴小智看不懂了...2021-07-27
- 大汉_客家族_数据工程_曾院士很遗憾后面的2pc ssi 等概念很难消化2021-05-08
- 趁早如果学完一个章节有一个测试掌握程度的就更好了2020-09-11
收起评论