在传统的数据操作中,数据库本身就是提供了ACID的相关特性操作,但是由于业务数据增大数据眼里导致我们不是得不将数据分到多个表中,如果还在一个库里还可以使用CID原则,只要两个分在不同的数据库上ACID原则不能实现,数据就会出现不一致。
特性:原子性、一致性、隔离性、持久性
要掌握分布式需要了了解一下的概念
CAP原理
ACID原理与BASE原理
基于XA协议的两个阶段提交:在实际应用中因为提交过程比较复杂、如果提交中出现失败就会导致数据挂起状态
书屋补偿机制
理解起来非常简单,实现比较复杂
操作多个数据库,一个成功一个失败,成功的数据库要一个补偿接口失败的回滚,让数据恢复到最初操作。
基于本地消息的最终一致性
基于MQ消息队列的最终一致性。(出现问题人工补偿)
1.CAP 原理的解析
C-Consitent, 一致性,具体是指操作成功后、所有的节点在痛一个时间看到数据完全一致、所有一致就是数据一致性。
A-Availability, 可用性、只服务一致可用,在规定时间内完成响应
P-Partition tolerance ,分区容错性,指分布式系统在遇到毛哥节点活网络分区故障的时候,依旧可以对外提供服务。
CAP原则只能满足其中两项:CP 、AP
我们在使用分布式系统的时候就是为了满足某个节点不可用的情况下,系统还能对外服务,这正事P的体现,如果服务不满足的P的话就不是一个分布式系统,在分布式系统中P总是成立的
client轮询访问A和B,A - >B同步的过程
2 ACID与BASE
在关系型数据库中,最大的特点就是事物处理,也就是ACID
A原子性
C一致性
I隔离性
D持久性
AICD强调的是强一致性、要么全做、要么全不做、传统的数据都有ACID的特性、在ACP原理中,保证的是CA,在分布式系统流行的今天、ACID在逐步向BASE转换
BASE是Basically Availiable(基本可用),Soft-state(软状态),Eventruelly consistent(最终一致性)
Basically Availiable(基本可用):分布式系统在出现故障情况下、允许损失部分可用性、保障核心可用
Soft-state(软状态):就是值系统允许出现中间状态,该中间状态不会影响系统的整体可用性,分布式存储中一般一份数据会有两到三个副本,允许不同副本间数据的同步延时就是软状态的提醒。
Eventruelly consistent(最终一致性):所有的数据副本经过一段时间、最终能达到一致性,弱一致性和强一致性相反,最终一致性是弱一致性的一种特性情况
BASE模型是传统ACID模型的发面,不同与ACID,BASE强调牺牲高一致性,从而获得可用性,数据允许在一段时间内不一致,但最终保持一致就行
XA协议实现两阶段提交的分布式事务
什么是2pc
2pc就是两阶段提交协议、讲数据库的事务提交分为两阶段、准备阶段prepare phase ,提交阶段commit phase ,P是准备节点,C是提交阶段
XA方案
是由X、Open组织提出的分布式规范
整体是有一个事物管理(TM)和多个资源管理(RM)组成
RM一般就是数据库
TM就相当于程序中的数据源
提交分为两个阶段:prepare/commit