关于分布式事务的由来你知识多少
简介:分布式事务介绍和产生原因
- 什么是分布式事务
- 事务 ``` 事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销
分两种: 一个是本地事务:本地事物其实可以认为是数据库提供的事务机 一个是分布式事务
- 分布式事务
指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用
分布式事务需要保证这些小操作要么全部成功,要么全部失败。
本质上来说,分布式事务就是为了保证不同数据库的数据一致性
- 产生的原因
- 业务发展,数据库的拆分-分库分表
- SOA和微服务架构的使用
- 多个微服务之间调用异常
- 网络异常、请求超时、数据库异常、程序宕机等
- 为啥说是核心知识呢,基本是每个微服务架构项目都离不开的难题

<a name="SVeFN"></a>
# 分布式事务下数据最终一致性-CAP的权衡结果 BASE理论
**简介:分布式事务下数据最终一致性-BASE理论介绍**

- 什么是Base理论
CAP 中的一致性和可用性进行一个权衡的结果,核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性, 来自 ebay 的架构师提出 ```
- Basically Available(基本可用)
- 假设系统,出现了不可预知的故障,但还是能用, 可能会有性能或者功能上的影响,比如RT是10ms,变成50ms
- Soft state(软状态)
- 允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时
Eventually consistent(最终一致性)
- 系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值
关于数据一致性
- 强一致:操作后的能立马一致且可以访问
- 弱一致:容忍部分或者全部访问不到
- 最终一致:弱一致性经过多一段时间后,都一致且正常
分布式事务的常见解决方案概览
简介:讲解分布式事务常见解决方案概览
- 常见分布式事务解决方案
- 2PC 和 3PC
- 两阶段提交, 基于XA协议
- TCC
- Try、Confirm、Cancel
- 事务消息
- 最大努力通知型
- 2PC 和 3PC
- 分布式事务分类
- 刚性事务:遵循ACID
- 柔性事务:遵循BASE理论
- 分布式事务框架
- TX-LCN:支持2PC、TCC等多种模式
- https://github.com/codingapi/tx-lcn
- 更新慢(个人感觉处于停滞状态)
- Seata:支持 AT、TCC、SAGA 和 XA 多种模式
- https://github.com/seata/seata
- 背靠阿里,专门团队推广
- 阿里云商业化产品GTS
- RocketMq:自带事务消息解决分布式事务
- TX-LCN:支持2PC、TCC等多种模式