CAP定理及二阶段提交

二阶段提交
    CAP定理,C即consistency,一致性。A即availability,可用性。P即pratition tolerance,分区容错性。
        C:指在一个分布式系统中,多个节点查询数据均是一致的。
        A:指系统在不同节点,用户可以立即访问。
        P:一个节点宕机,并不会影响对用户提供可用的服务。
    以主从备份系统为例,当用户在主系统中提交数据,将100修改为200时,在备份系统访问数值,保证是200就叫做一致性。
在主系统修改完毕之后,需要立马在备用系统使用,此时200还没有同步过来,但是不能影响用户先行使用,此时仍然使用数据
100,这叫可用性。分区容错,一般对应用户不可知,一个节点宕机,其他节点继续提供可靠服务。
    一般情况下,分布式系统都需要保证P,所以只能在C和A中间取舍。
    CAP定理:一个系统中,一定不能同时保证三个特性。
    CAP定理证明:以主从备份系统为例,我们反证。在主系统修改数值100到200,那么主系统需要同步到备用系统,在同步
的这段时间里,备用系统一定无法同时保证一致性和可用性的。

    二阶段提交的目的在于保证分布式系统中数据的一致性。含义如名,该协议将一个数据过程分为两个阶段,投票和提交。
构造图如下:

    一、投票
    投票的过程是,协调点向所有参与者发送执行请求,并等待参与者的反馈。参与者收到协调点的请求,执行事务但不提交,
最终,记录事务日志(防止宕机的数据回滚)并将执行结果反馈给协调点,自己阻塞等待。
    投票的结果,有三种可能性:
    ①超时
    ②有参与者失败
    ③参与者全部成功
    二、提交
    超时或有参与者失败,则协调点判定,此次执行失败。告诉用户失败,并且向所有协调者发送放弃执行指令。如果所有参
与者均执行成功,那么告诉用户成功,并向所有协调者发送提交指令。

    这样的设计,有几个比较明显的缺点:
    1、协调点是一个单点,一旦宕机会影响整个服务。
    2、参与者投票完成之后,阻塞等待,效率低下。
    3、如果提交阶段,有的协调点因为网络问题,未收到提交指令,而其他节点正常提交,则数据不一致。
    针对最明显的几点缺点,之后做出改进。
    1、协调点的宕机恢复和其他节点相同,有事务日志支持。
    2、超时机制。对于参与者而言,在等待时间内仍没有收到协调点的指令,则主动放弃等待,并向所有其他参与者发送放弃
此次提交指令。当然,此时可能是,当前节点因为网络问题而未收到提交指令,此时可能其他参与者已经提交。所以需要参照第
三点。
    3、互询机制。当参与者阻塞于等待提交,超时未收到提交或放弃指令时。当前参与者可以去访问其他参与者,如果其他参
与者已经执行了“提交”或“放弃”指令,那么当前参与者也执行同样指令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值