多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 什么是分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。 ## CAP 1. C Consistency 一致性。操作成功后所有节点在同一时间,存储的数据都是完全一致的。 2. A Availability 可用性。指在**规定的时间**内返回**响应结果**。 3. P Partition Tolerance 分区容错性。指分布式系统在遇到网络拥塞、网卡故障等,会导致网络故障或不通,导致整个系统环境被切分成若干个独立的区域,形成了网络分区,分区中的节点之间可通信,分区间不 可通信。 网络分区出现后,各个节点之间数据无法马上同步,为了保证高可用,分布式系统需要即刻 响应用户的请求。但,此时可能某些节点还没有拿到最新数据,只能将本地旧的数据返回给 用户,从而导致数据不一致的情况。 CAP原理指出,这3个指标不能同时满足,最多只能满足其中的两个。 ## CAP为什么只能满足其中俩个? P 分区容错性 是必须要满足的,因为分布式本身就是系统功能部署在不同的计算机节点,这种结构就导致 P 是必选的。在满足 P 分区容错性 的前提 下, C 一致性 和 A 可用性 只能选择一个,无法同时满足。 ## CP系统 强一致性系统,一般是金融场景下用的多,该场景可以为了数据一致,容忍系统长时间无响应。 ## AP系统 适合保证 AP 放弃 C 的场景有很多。比如,很多查询网站、电商系统中的商品查询等,用 户体验非常重要,所以大多会保证系统的可用性,而牺牲一定的数据一致性。 ## 数据库ACID * A - Atomicity(原子性),事务中的操作要么都做,要么都不做。 * C - Consistency(一致性),系统必须始终处在强一致状态下。 * I - Isolation(隔离性),一个事务的执行不能被其他事务所干扰。 * D - Durability(持久性),一个已提交的事务对数据库中数据的改变是永久性的。 ACID强调的是强一致性,要么全做,要么全不做 ## BASE原理 * 基本可用(Basically Available) 是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。 * 软状态(Soft State) 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有两到三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。 * 最终一致性(Eventual Consistency) 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。 BASE模型是传统ACID模型的反面,不同与ACID,BASE强调牺牲高一致性,从而获得可用性,**数据允许在一段时间内的不一致,只要保证最终一致就可以了**。 **基于XA协议的两阶段提交和事务补偿机制就是基于ACID实现的。 而基于本地消息表和基于MQ的最终一致方案都是通过BASE原理实现的** ## 使用分布式事务的场景 1. 不同业务使用各自的数据库,独立的数据库之间无法使用事务。 2. 使用微服务开发,但是只使用了一个数据库没物理切割,服务之间调用无法使用事务。 俩种情况都会导致数据不一致问题