1、事务一致性:
分布式系统中通过事务管理器或者协调器保证对数据操作前和操作后达到一致性状态,比较常见的跨行转账
一致性包括:
a、强一致性:保证多个数据节点间数据完全一致,数据写入状态和读出的状态完全一致
b、弱一致性:系统在写入后,不保证能够立即读到最新的值,尽可能的保证在一定时间后到达一致性状态
c、最终一致性:数据写入后,能够保证在一定时间内的一致性,在弱一致的基础上保证数据一致
2、理解CAP理论:
CAP理论:指一个分布式计算系统不可能同时满足Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)
Consistency:一致性即满足数据操作前后能够达到一致状态
Availability:指分布式服务系统能够提供一定量级用户同时在线访问,并且能够在一定时间内响应
Partition :分区容错是指多个服务节点提供服务,即使一个或者多个节点挂了或者宕机也能提供对外一致性和可用性服务
3、Base理论基础:
BASE指Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性),即首字母缩写
BASE理论是基于CAP,通过适当的方式保证分布式事务数据最终一致性的
Basically Available:系统故障时能够容忍一定的损失,通常可以通过降级、一定时长的延迟满足系统可用状态
Soft state:系统中数据可以存在中间状态,不影响系统整体可用,多个数据节点间数据同步有一定的延迟
Eventually consistent:指多个节点间数据,在一定时间内系统保证最终数据能够达到一致,而不需要保证系统数据的强一致性
4、一致性算法Paxos:
即分布式系统由于网络、crash、重启,消息可能会延迟、丢失、重复等原因的情况下,通过Paxos算法协调能够让数据达到最终一致性。
1、分布式系统中数据是由n个node节点组成的数据拷贝副本,对其中一个主node节点的修改,需要保证节点的值修改同步到其他节点上
2、存在多个client 对node节点key的修改,如何保证保证顺序顺序或者最终修改时一致的
3、想要保证各个节点间数据通信正常,需要了解节点间的通讯模型
共享内存:两个不相干的进程访问同一逻辑内存即(共享变量),是两个正在运行的进程之间共享和传递数据的一种有效通讯方式
消息传递(Paxos选择的通讯方式):在并行、并发编程中实现进程间调用的解耦,进程间通过发送(生产)和接收(或者消费)的方式来达到数据同步的效果
Paxos算法角色组成:
Proposer:提案发起者
Acceptor:提案接受者
Learner:学习者
推导:
Proposer提出(propose)提案n, value,Acceptor接受(accept)提案,如果某个提案被选定或者被所有的参与者确定,那么该提案里的value就被选定
在那种情况Proposer、Acceptor、Learner认为同一个value被选定呢?
一致性算法,安全性: 只有被Proposer提出的value才能被选定,并且最终只有一个value才能被选定,进程最终也能获取到被选定的value
Paxos算法描述:
Paxos算法分为两个阶段:
阶段一:
a、Proposer选择一个提案编号N,向半数以上的Acceptor发送编号为N的Prepare请求
b、如果一个Acceptor收到编号为N的Prepare请求,且编号N大于Acceptor已经响应过的最大编号,那么就会将它已经接受过的编号最大提案作为响应反馈给 Proposer,同时该Acceptor承诺不在接受任何小于N的提案
阶段二:
a、如果Proposer接收到半数以上Acceptor对其发出的编号为N的Prepare响应,那么就会发送一个【N,V】的Accept请求给半数以上的Acceptor,V就是收到的响应中编 号最大的提案的value,如果响应中不包含任何提案,那么V就由Proposer自己决定。
b、如果Acceptor收到一个针对N的编号Accept请求,只有该Acceptor没有接受过编号大于N的Prepare请求做出响应,他就接受该提案。
Paxos算法的活性(选择主Proposer)