分布式事务的介绍
本周非常感谢David大佬给我们带来《分布式事务的介绍》,相关总结如下:
Slides
- David使用的slides。
- David的知乎讨论帖:分布式事务选型该怎么取舍?
Q&A
相关的Q&A讨论总结如下:
如何理解Serializable以及Linearizable?
- 简单来说Serializable是最高的隔离级别,它主要保证多个transaction并行执行的结果和串行执行的结果是一样的,就是相互之间没有任何干扰(不一定是按全局时间顺序)。而Linearizable算是一致性中最强的保证了,它的思想是任何时候整个系统就像只有一个拷贝一样,不管你访问哪一个replica,都能立即得到最新的结果。
- 【扩展】我其实也根据DDIA写了一系列关于这几个概念的文章,供大家参考:
- 【扩展】这篇文章写的一致性和隔离性的介绍也很不错:分布式事务中的一致性和隔离性你真的懂了吗
如何理解二阶段提交?
- 讨论中涉及的二阶段提交问题很多,但应该都可以在扩展阅读中找到相关的答案。
- 【扩展】还不错的简单理解二阶段提交的文章:分布式一致性之两阶段提交协议、三阶提交协议
- 【扩展】比较详细的分析了二阶段提交中出现的各种状况的文章:正确理解二阶段提交(Two-Phase Commit)
- 【扩展】二阶段提交的paper。
如何理解TCC模式
- 讨论中围绕TCC模式也有很多问题,希望大家都能够可以在扩展阅读中找到答案。
- 【扩展】觉生关于Seata TCC的解析,很详细的使用例子和实践中做过的性能提升方式:分布式事务 Seata TCC 模式深度解析
- 【扩展】更关注代码层实现的介绍:Seata TCC模式原理与实战
- 【扩展】更关注源码级的解析:分布式事务:Seata框架AT模式及TCC模式执行流程剖析
常见的数据库支持的隔离级别
- 还没有找到一篇很好的总结文章,可以根据扩展阅读来各个分析,也欢迎加入更多的数据库。后期我会总结一篇文章放到这里。
- 【扩展】Oracle文档介绍目前支持Serializable和Read Commit(默认)以及read-only isolation.
- 【扩展】MySQL官方文档介绍支持所有的各个级别的隔离级别,默认是repeatable read。
- 【扩展】SQL Server也可以设置各种不同级别的隔离,默认是READ COMMITTED。
- 【扩展】PostgrcSQL官方支持四种隔离级别,默认是read committed。
- 【扩展】DB2官方支持四种隔离级别,默认是Cursor Staility
- 【扩展】MongoDB默认是read Uncommitted.
- 【扩展】Neo4j默认是read-commited的级别。
- 【扩展】Cassandra有点特殊,支持row-level isolation。
再次感谢大家的参与,也希望大家有好的资源能联系我更新这篇文章。谢谢大家。
下周话题安排和往期话题回顾敬请参见《系统设计开荒小分队话题讨论简介》
2 Responses
[…] 【扩展】我们在之前的分布式事务中有详细介绍这个问题。 […]
[…] 【扩展】我们上次关于分布式事务的介绍的总结。 […]