1.CAP理论
C(Consistency)一致性
分布式系统中,能够做到针对一个数据的更新成功后,其他所有的用户都可以读取到[最新的值],那么这样子的系统就是强一致性的。理解为要保证数据的实时性
A(Availability)可用性 在有限时间内返回记过即可
P (Partition tolerance)分区容错性
分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务。理解为需要服务器一直启动,不能断掉。
高可用:理解为当一个服务器节点挂点之后,要有另一个节点去支持当前系统的工作,保证系统可用
2.分布式事务
如何保证分布式事务,一般是二段提交、三段提交和Paxos算法
二段式提交协议:将事务分成了两段过程来进行处理,执行过程如下:
阶段一:提交事务请求
1.事务询问。协调者向所有参与者发送事务提交内容,询问是否可以进行事务提交操作,然后就开始等待参与者的响应。
2.执行事务。各参与者执行事务操作,并将undo和redo信息写进事务日志中。
3.各参与者向协调者反馈事务询问后的响应。
阶段二:执行事务请求
假如协调者从参与者得到的响应是Yes,那么执行事务提交
1.发送提交请求
2.事务提交
3.反馈事务提交结果,参与者在完成事务提交之后会给参与者发送ACK确认信息
4.完成事务
从参与者得到的响应是No,那么中断事务
1.发送回滚请求。协调者向参与者发送回滚请求
2.事务回滚。参与者接受到回滚请求,利用阶段一中的undo信息来进行事务回滚曹操作
3.反馈事务回滚结果
4.中断事务
优点:原理简单,实现方便
缺点:同步阻塞、单点问题、脑裂
三段式提交协议
HA脑裂:
在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。
集群脑裂:
集群的脑裂通常是发生在集群中部分节点之间不可达而引起的(或者因为节点请求压力较大,导致其他节点与该节点的心跳检测不可用)。当上述情况发生时,不同分裂的小集群会自主的选择出master节点,造成原本的集群会同时存在多个master节点。