分布式事务理论基础
事务问题
在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。
CAP定理
分布式系统有三个指标:
- 一致性(Consistency)
- 可用性(Avaliablity)
- 分区容错性(Partition tolerance)
Eric Brewer说,分布式系统无法同时满足三个指标,叫CAP定理
一致性:用户访问分布式系统任一节点,得到数据一致
可用性:用户访问任意健康节点,必须得到响应,而不是超时或拒绝
分区容错性
- 分区:因故障部分节点失去连接,形成独立分区
- 容错:集群出现分区时,整个系统持续对外提供服务
总结:分布式系统通过网络连接,一定会出现分区问题(P)。出现时,系统的一致性(C)和可用性(A)无法同时满足。
BASE理论
是CAP的一种解决思路,包含三个思想:
- 基本可用(Basically Avaliable)
- 软状态(Soft State)
- 最终一致性(Eventually Consistent)
AP模式:各事务分别执行提交,允许结果不一致,采用弥补措施恢复数据,实现最终一致。
CP模式:各子事务互相等待,同时提交,同时回滚,达成强一致。等待过程处于弱可用状态。
初识Seata
架构
Seata事务管理有三个重要角色:
- 事务协调者(TC):维持全局和分支事务状态
- 事务管理器(TM):定义全局事务范围
- 资源管理器(RM):管理分支事务资源
Seata提供四种不同分布式解决方案:
- XA模式:强一致,牺牲一定可用性,无业务侵入
- TCC模式:最终一致分阶段事务模式,有业务侵入
- AT模式:最终一致分阶段事务模式,无业务侵入,默认
-
部署TC服务
seata的部署和集成.md
修改seata配置(registry.conf) ```shell registry {file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = “nacos”
nacos { application = “seata-tc-server” serverAddr = “127.0.0.1:8848” group = “DEFAULT_GROUP” namespace = “” cluster = “default” username = “nacos” password = “nacos” } }
config {
file、nacos 、apollo、zk、consul、etcd3
type = “nacos”
nacos { serverAddr = “127.0.0.1:8848” namespace = “” group = “SEATA_GROUP” username = “nacos” password = “nacos” dataId = “seataServer.properties” } }
```
在nacos添加配置