【Zookeepr】分布式一致性相关理论

分布式一致性理论

计算机的发展

  1. 从集中式到分布式:最大的特点就是部署简单。
  2. 集中式:底层都是采用性能卓越的大型主机,一个节点单独完整作业,不用考虑多个节点之间的协调问题
  3. 分布式:
    概念
    分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
    特点
    分布性
    对等性
    并发性
    缺乏全局时钟
  4. 分布式环境的各种问题
    通信异常
    网络分区
    三态(成功,失败,超时)(超时:请求发送成功,但是服务器接收不成功,或者请求发送成功,服务器相应成功,但是客户端接收不成功)
    节点故障

分布式一致性的问题

  1. 为了提高系统的可用性,以防止单点故障引起的系统不可用
  2. 提高系统的整体性能,通过负载均衡技术,能够让分布在不同地方的数据副本,都能够为用户提供服务

分布式一致性级别

  1. 强一致性:写入什么,读到什么
  2. 弱一致性:尽量保证数据一致性
  3. 最终一致性:弱一致性的一个特例。在一个特定时间内,保持最终一致

事务

概念:
事务是由一系列对系统中数据进行访问与更新的操作所组成的一个程序的执行逻辑单元。
宏观概念:指不可分割的一个逻辑执行单元
狭义概念:数据库事务

特征: ACID

原子性(Atomicity):全部执行成功或者不成功,没有中间状态
一致性(Consistency): 不能破坏数据库数据的完整性和一致性
隔离性(Isolation): 并发的事务是相互隔离的。不能干扰

隔离级别脏读可重复读幻读
未授权读取存在不可以存在
授权读取不存在不可以存在
可重复读取不存在可以存在
串行化不存在可以不存在

四种不同的事务处理级别:

未授权读取:读未提交,允许脏读
授权读取:读已提交
重复读:事务过程中多次读取同一数据是一致的,该操作禁止不可重复读和脏读,可能出现幻读
串行化: 最严格的事务隔离级别。事务串行执行,不能并行执行

两个重点概念:
脏读:读到事务提交之前的值,因为读取到的未提交事务有可能回滚
幻读:同样的事务操作,前后可能读取同一数据出现不一致

持久性(Durability): 事务一旦提交,数据库对应数据的状态变更就是永久性的。

CAP 理论

CAP理论告诉我们,一个分布式系统不可能同时满足C,A,P三个需求

C:Consistency,一致性: 多个副本保持一致
**A:Availability,可用性:**系统提供的服务必须一直处于可用,对于用户的每一个操作请求总是能在有限时间内返回结果
P:Partition Tolerance分区容错性: 分布式系统在遇到任何网络分区故障时,仍然需要能够保证对外提供满足一致性和可用性的服务

放弃P : 最简单的极端做法,就是放置在一个节点上。 放弃P也就意味着放弃了系统的可扩展性
放弃A: 一旦系统遇到网络分区或者其他故障时,服务需要等待一段时间,在等待时间内就无法正常对外提供服务,即服务不可用
放弃C: 事实上,放弃一致性是指放弃数据的强一致性,而保留最终一致性,具体多久达到数据同步取决于存储系统的设计

经验:

  1. 架构师不要花费精力浪费在设计同时满足CAP的存储系统
  2. 分区容错性往往是分布式系统必然要面对和解决的问题。所以架构师应该把精力放在如何根据业务特点在A和C之间寻求平衡。

原因 总的来说就是:数据存在的节点越多,分区容错性§越高,但要复制更新的数据就 越多,一致性©就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长, 可用性(A)就会降低

MySQL:满足 CA
ZooKeeper:满足 CP

分布式系统的 CAP 理论

BASE理论

是对CAP理论中的C和A的权衡结果: 不是强一致,而是最终一致, 不是可用,而是基本可用。

Basically Available:基本可用
相应时间的损失
功能上的损失
Sort State:软状态
允许存在不同节点同步数据时出现延迟,且出现数据同步延迟时存在的中间状态也不会影响系统的整体性能。
Eventually Consistent:最终一致性
系统中所有数据副本,在经过一段时间后,都可以达到同步:要求最终达到一致,而不是实时一致

Quorum NRW

quorum机制是分布式场景中常用的,用来保证数据安全,并且在分布式环境中实现最终一致性的投票算法

N: 复制的节点数,即一份数据被保存的份数。
R: 成功读操作的最小节点数,即每次读取成功需要的份数。
W: 成功写操作的最小节点数 ,即每次写成功需要的份数。

Write to all copies with latest version no, wait synchronously for W success
Read from all copies, wait for first R responses, pick the highest version number

条件: W + R > N 保证一定能读取到最新的数据

结论: 这三个因素决定了可用性,一致性和分区容错性。只需W + R > N,就可以保证强一致性。

在保证了强一致性的情况下:并且N一经固定,那么
如果

W = 1, R = N,对写操作要求高性能高可用。
R = 1, W = N , 对读操作要求高性能高可用,比如类似cache之类业务。
W = Q, R = Q where Q = N / 2 + 1 一般应用适用,读写性能之间取得平衡。如N=3,W=2,R=2

分布式事务

前提: 分布式系统中,每个节点都能知道自己的事务操作是否成功, 但是没法知道系统中的其他节点的事务是否成功。这就有可能会造成分布式系统中的各节点的状态出现不一致。
因此当一个事务需要跨越服务器节点,并且要保证事务的ACID特性时,就必须引入一个 “协调者”的 角色。那么其他的各个进行事务操作的节点就都叫做“参与者”

典型的两种分布式事务的提交模式

2PC Two-Phase Commit
阶段一:提交事务请求
阶段二:执行事务请求

3PC Three-Phase Commit
阶段一:CanCommit
阶段二:PreCommit
阶段三:DoCommit

Paxos算法

暂略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值