分布式事务的介绍

本周非常感谢David大佬给我们带来《分布式事务的介绍》,相关总结如下:

Slides

  1. David使用的slides
  2. David的知乎讨论帖:分布式事务选型该怎么取舍?

Q&A

相关的Q&A讨论总结如下:

如何理解Serializable以及Linearizable?

  1. 简单来说Serializable是最高的隔离级别,它主要保证多个transaction并行执行的结果和串行执行的结果是一样的,就是相互之间没有任何干扰(不一定是按全局时间顺序)。而Linearizable算是一致性中最强的保证了,它的思想是任何时候整个系统就像只有一个拷贝一样,不管你访问哪一个replica,都能立即得到最新的结果。
  2. 【扩展】我其实也根据DDIA写了一系列关于这几个概念的文章,供大家参考:
  3. 【扩展】这篇文章写的一致性和隔离性的介绍也很不错:分布式事务中的一致性和隔离性你真的懂了吗

如何理解二阶段提交?

  1. 讨论中涉及的二阶段提交问题很多,但应该都可以在扩展阅读中找到相关的答案。
  2. 【扩展】还不错的简单理解二阶段提交的文章:分布式一致性之两阶段提交协议、三阶提交协议
  3. 【扩展】比较详细的分析了二阶段提交中出现的各种状况的文章:正确理解二阶段提交(Two-Phase Commit)
  4. 【扩展】二阶段提交的paper

如何理解TCC模式

  1. 讨论中围绕TCC模式也有很多问题,希望大家都能够可以在扩展阅读中找到答案。
  2. 【扩展】觉生关于Seata TCC的解析,很详细的使用例子和实践中做过的性能提升方式:分布式事务 Seata TCC 模式深度解析
  3. 【扩展】更关注代码层实现的介绍:Seata TCC模式原理与实战
  4. 【扩展】更关注源码级的解析:分布式事务:Seata框架AT模式及TCC模式执行流程剖析

常见的数据库支持的隔离级别

  1. 还没有找到一篇很好的总结文章,可以根据扩展阅读来各个分析,也欢迎加入更多的数据库。后期我会总结一篇文章放到这里。
  2. 【扩展】Oracle文档介绍目前支持Serializable和Read Commit(默认)以及read-only isolation.
  3. 【扩展】MySQL官方文档介绍支持所有的各个级别的隔离级别,默认是repeatable read。
  4. 【扩展】SQL Server也可以设置各种不同级别的隔离,默认是READ COMMITTED。
  5. 【扩展】PostgrcSQL官方支持四种隔离级别,默认是read committed。
  6. 【扩展】DB2官方支持四种隔离级别,默认是Cursor Staility
  7. 【扩展】MongoDB默认是read Uncommitted.
  8. 【扩展】Neo4j默认是read-commited的级别。
  9. 【扩展】Cassandra有点特殊,支持row-level isolation。

再次感谢大家的参与,也希望大家有好的资源能联系我更新这篇文章。谢谢大家。

下周话题安排和往期话题回顾敬请参见《系统设计开荒小分队话题讨论简介

You may also like...

1 Response

  1. January 16, 2022

    […] 【扩展】我们在之前的分布式事务中有详细介绍这个问题。 […]

Leave a Reply

Your email address will not be published. Required fields are marked *