讲人话系列:分布式事务00:绪论

350 阅读2分钟

很多时候,我们用习惯了一个东西,会忘记当初设计它使用它的初衷,以及我们需要解决的问题。

就像数据库事务,很多人都习惯了它的存在,听过了它的传说,以及它解决了很多问题。以至于很多人进行数据库操作不用事务包裹就不舒服的地步。但是翻开了来说,你每一次事务用得对吗?需要吗?它到底给你解决了什么问题?有想过吗?

如果你没有深思熟虑这个问题,问到事务给解决的问题,我想绝大部分的人,第一反应肯定是:两条SQL要么同时成功、要么同时失败啊。 事务可不仅仅是这一点点功能。

这就切入到我们今天的话题:我们分布式事务设计的初衷是什么?我们要解决的问题是什么?我可以很直接的说:分布式事务系统就是多个RPC调用(单机事务)要么同时成功,要么同时失败的统一处理系统。 而不是真正去实现分布式事务,是的,不是真正的实现分布式事务或许分布式事务需要打上引号。

下面我将从为什么分布式事务的目的是这个,以为怎么实现分布式事务两个大的方向组织这个系列的文章,起重点主要为什么是这个,关于为什么目的是这个我们将从1.事务的历史,2.Innodb事务实现的简要概述,3.常见的分布式事务解决方案的本质三个方面一步步的描述这个结论。至于怎么实现在理解常见分布式事务原理之后,弄懂一个关键点:怎么让服务可靠之外就没有任何问题了。

为啥分布式事务的目的只是解决要么同时成功要么同时失败

事务的历史

  1. 讲讲事务系统和文件系统的区别
  2. 讲讲ACID到底是个啥
  3. 讲讲隔离等级又是什么

Innodb事务实现的简要概述

  1. 讲讲ACID的实现
  2. 讲讲隔离等级的实现以及锁机制
  3. 讲讲最终一致性这个伪概念

常见的分布式事务解决方案的本质

  1. 事务维度业务调用类型的划分
  2. 讲讲 JTA 以及 XA
  3. 讲讲所谓可靠消息
  4. 讲讲TCC
  5. 讲讲不吹牛是个好东西的阿里GTS

怎么实现呀要么同时成功要么同时失败

前面的如果讲透彻了,其实怎么实现反而是件简单的事情,这里面最重要的是怎么建立可靠的日志,怎么在各种宕机以后还能实现我们的目标。

最终希望这个系列的文章对大家有好处。