国内大的网站建设公司,网站排名突然掉了怎么回事,简述站点推广有哪些方式,html网页设计大赛作品目录
1.分布式事务问题
1.1本地事务
1.2分布式事务
2.理论基础
2.1CAP定理
2.1.1一致性
2.1.2可用性
2.1.3分区容错
2.1.4矛盾
2.2BASE理论
2.3解决分布式事务的思路
1.分布式事务问题
1.1本地事务
本地事务#xff0c;也就是传统的单机事务。在传统数据库事务中…目录
1.分布式事务问题
1.1本地事务
1.2分布式事务
2.理论基础
2.1CAP定理
2.1.1一致性
2.1.2可用性
2.1.3分区容错
2.1.4矛盾
2.2BASE理论
2.3解决分布式事务的思路
1.分布式事务问题
1.1本地事务
本地事务也就是传统的单机事务。在传统数据库事务中必须要满足四个原则 1.2分布式事务
分布式事务就是指不是在单个服务或单个数据库架构下产生的事务例如 跨数据源的分布式事务 跨服务的分布式事务 综合情况
在数据库水平拆分、服务垂直拆分之后一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例包括下面几个行为 创建新订单 扣减商品库存 从用户账户余额扣除金额
完成上面的操作需要访问三个不同的微服务和三个不同的数据库。 订单的创建、库存的扣减、账户扣款在每一个服务和数据库内是一个本地事务可以保证ACID原
则。
但是当我们把三件事情看做一个业务要满足保证“业务”的原子性要么所有操作全部成功要
么全部失败不允许出现部分成功部分失败的现象这就是分布式系统下的事务了。
此时ACID难以满足这是分布式事务要解决的问题
1.3演示分布式事务问题
我们通过一个案例来演示分布式事务的问题
1创建数据库名为seata_demo然后导入课前资料提供的SQL文件 2导入课前资料提供的微服务 微服务结构如下 其中
seata-demo父工程负责管理项目依赖 account-service账户服务负责管理用户的资金账户。提供扣减余额的接口 storage-service库存服务负责管理商品库存。提供扣减库存的接口 order-service订单服务负责管理订单。创建订单时需要调用account-service和storage-service
3启动nacos、所有微服务
4测试下单功能发出Post请求
请求如下
curl --location --request POST http://localhost:8082/order?userIduser202103032042012commodityCode100202003032041count20money200
如图 测试发现当库存不足时如果余额已经扣减并不会回滚出现了分布式事务问题。
2.理论基础
解决分布式事务问题需要一些分布式系统的基础知识作为理论指导。
2.1CAP定理
1998年加州大学的计算机科学家 Eric Brewer 提出分布式系统有三个指标。 Consistency一致性 Availability可用性 Partition tolerance 分区容错性 它们的第一个字母分别是 C、A、P。
Eric Brewer 说这三个指标不可能同时做到。这个结论就叫做 CAP 定理。
2.1.1一致性
Consistency一致性用户访问分布式系统中的任意节点得到的数据必须一致。
比如现在包含两个节点其中的初始数据是一致的 当我们修改其中一个节点的数据时两者的数据产生了差异 要想保住一致性就必须实现node01 到 node02的数据 同步 2.1.2可用性
Availability 可用性用户访问集群中的任意健康节点必须能得到响应而不是超时或拒绝。
如图有三个节点的集群访问任何一个都可以及时得到响应 当有部分节点因为网络故障或其它原因无法访问时代表节点不可用 2.1.3分区容错
Partition分区因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接
形成独立分区。 Tolerance容错在集群出现分区时整个系统也要持续对外提供服务
2.1.4矛盾
在分布式系统中系统间的网络不能100%保证健康一定会有故障的时候而服务有必须对外保
证服务。因此Partition Tolerance不可避免。
当节点接收到新的数据变更时就会出现问题了 如果此时要保证一致性就必须等待网络恢复完成数据同步后整个集群才对外提供服务服务
处于阻塞状态不可用。
如果此时要保证可用性就不能等待网络恢复那node01、node02与node03之间就会出现数据不
一致。
也就是说在P一定会出现的情况下A和C之间只能实现一个。
2.2BASE理论
BASE理论是对CAP的一种解决思路包含三个思想 Basically Available 基本可用分布式系统在出现故障时允许损失部分可用性即保证核心可用。 Soft State软状态在一定时间内允许出现中间状态比如临时的不一致状态。 Eventually Consistent最终一致性虽然无法保证强一致性但是在软状态结束后最终达到数据一致。
2.3解决分布式事务的思路
分布式事务最大的问题是各个子事务的一致性问题因此可以借鉴CAP定理和BASE理论有两种解决思路 AP模式各子事务分别执行和提交允许出现结果不一致然后采用弥补措施恢复数据即可实现最终一致。 CP模式各个子事务执行后互相等待同时提交同时回滚达成强一致。但事务等待过程中处于弱可用状态。
但不管是哪一种模式都需要在子系统事务之间互相通讯协调事务状态也就是需要一个事务协调者(TC) 这里的子系统事务称为分支事务有关联的各个分支事务在一起称为全局事务。