分布式事务

什么是分布式事务

分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。

本质上来说,分布式事务就是为了保证不同数据库的数据一致性。

CAP理论

在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)3 个要素最多只能同时满足两个,不可兼得。其中,分区容忍性又是不可或缺的。

一致性原则

弱一致性:写入一个新值后,可以读的出来也可以读不出来,对数据完整性要求不高的场景。

最终一致性:写入一个新值后,在某个时间窗口可以读出来(消息中间件场景)

强一致性:新数据写入后,一定是一致的。

Base理论

核心思想:

  • 基本可用(Basically Available):指分布式系统在出现故障时,允许损失部分的可用性来保证核心可用。
  • 软状态(Soft State):指允许分布式系统存在中间状态,该中间状态不会影响到系统的整体可用性。
  • 最终一致性(Eventual Consistency):指分布式系统中的所有副本数据经过一定时间后,最终能够达到一致的状态。

XA协议

待补充。。。

TCC模型

三个阶段,分别是try,commit,cancel

需要原来的服务调用接口支持三个逻辑:分布式事务的管理,由事务管理器处理

然后你原本的一个接口,要改造为3个逻辑,Try-Confirm-Cancel

  • 先是服务调用链路依次执行Try逻辑,完成业务检查,准备业务资源

  • 如果都正常的话,TCC分布式事务框架推进执行Confirm逻辑,完成整个事务,执行业务逻辑,try中预留了资源,Confirm可以成功

  • 如果某个服务的Try逻辑有问题,TCC分布式事务框架感知到之后就会推进执行各个服务的Cancel逻辑,撤销之前执行的各种操作,释放

执行过程中挂掉,可以设置超时,然后通过日志重新执行。

全局ID生成器

snowflake是twitter开源的分布式ID生成算法,其核心思想为,一个long型的ID:

  • 41bit作为毫秒数
  • 10bit作为机器编号
  • 12bit作为毫秒内序列号

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!