分布式详解

传统数据库事务包含4中事务特性:
1.原子性:事务中的所有操作,要么全部成功,要么全部失败,影响事务的操作,一般指的是增删改,也就是一个食物中,有多个增删改的SQL;
2.一致性:事务开始前到事务结束后,数据状态需要一致;
3.隔离性:多个事务之间的操作相互隔离,互不影响,比如我这边转账,不影响你支付,反之亦然;
  隔离级别:读未提交:会产生脏读,幻读,不可重复读的问题
                  读已提交:会产生幻读,不可重复读的问题
                  可重复读:会产生幻读的问题
                  串行化:没有任何问题,但是相当于锁表,效率极低。所以这种方案不用
    脏读:一个事务读到了另一个事务,没有提交的数据
    不可重复读:同一个事务连续读取两次,得到结果不一样
    幻读:书屋操作看到前和看到后的结果不一致,就像看到了幻觉一样
4.持久性:事务一旦提交,则永久的保存到磁盘,不可逆
分布式事务:在分布式环境下,出现的事务问题。
跨服务:多服务多数据库,多服务单数据库,总体来说就是出现了多个数据库连接

分布式理论:
CAP定理:是一种分布式系统架构;C就是Consistency(一致性),A就是Availability(可用性),P就是Partition tolerance(分区容错性)
一致性指用户访问分布式系统中的任意节点,得到的数据必须一致;
可用性指用户访问集群中的任意健康节点,必须得到响应,而不是超时或者拒绝
分区容错性: 分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,行程独立分区
                    容错:在集群出现分区时,整个系统也要持续对外提供服务,容忍出现分区的问题
在分布式环境下,这三个指标不可能同时做到,且P时一定要保证的
CP:在一定时间内,等待集群节点进行数据同步后,对外提供访问
AP:在任何时间内,多对外访问,但是得到的数据数据可能不一样

CA:不能同时出现,多个节点想要数据一直,需要时间同步。那么在这个时间内,一定不能对外访问,所以A不成立。如果可以对外访问,那么数据就不一致,所以C就不成立。如果一定要满足CA那么就没有P,也就不是分布式环境了,而是单节点

为什么P一定要保证:因为网络时不可靠的。客户因素没办法避免。

BASE理论:是对CAP的一种补充,放弃强一致性,追求最终一致性
BASE理论三个思想:Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用,譬如电商大促,为了应对大流量,暂时停止注册服务,这是注册服务就不可用,但是整个系统是可用的,所以叫基本可用
Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。比如订单状态:待付款,已付款等待发货,已发货,已签收,已结束
Evevtually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

分布式事务的解决思路:AP模式:各子事务分别执行和提交,允许出现结果,然后采用弥补措施恢复数据即可,实现最终一致,譬如增加了一条数据,后面有操作失败了,那么补偿措施只需要把增加的那条数据删除即可,因为子事务提交了,那么提交后的状态就是一个中间状态,也就是软状态。
CP模式:各个子事务执行后相互等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态,事务执行过程中,会锁定操作的资源,那么这个资源暂时是不可用的,所以整个系统是基本可用;
子事务:分支事务
全局事务:事务协调者,用来监控和通知各个分支事务

Seata:
  seata架构:TC(Transaction Coordinator):事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚,主要负责监控和通知各个事务,包括分支事务和全局事务;
TM(Transaction Manager):事务管理器:定义全局事务的范围,开始全局事务,提交或回滚全局事务,主要负责执行事务;
RM(Resource Manager):资源管理器:提交分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚

XA原理:
XA原理是X/Open组织定义的分布式事务处理标准,基本上主流关系型数据库都支持
原理都是基于两阶段提交:一阶段:事务协调者通知每个事务参与者执行本地事务,本地事务者执行后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁;
二阶段:事务协调者基于一阶段的报告来判断下一步操作:如果一阶段都成功,则通知所有事务参与者,提交事务,如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务。
优点:事务的强一致性,满足ACID原则,常用数据库都支持,实现简单,并且没有代码侵入
缺点:因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差,依赖关系型数据库实现事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值