一致性协议整理(总述)

本文探讨了CAP理论、2PC协议,以及一致性协议中的关键组件,如Leader选举、日志同步、快照和故障恢复。了解了网络分区与一致性之间的矛盾,以及如何通过Raft、ZAB等协议实现数据一致性在分布式系统中的应用。
摘要由CSDN通过智能技术生成

       一致性协议分布式环境下,解决如何在多节保证数据的一致性。分布式理论中,CAP 理论是分布式的理论基础,2PC 是分布式事务简单实现。本章首先简单介绍 CAP 理论和 2PC,然后介绍一致性协议实现的主要组成,比如 Leader 选举、日志同步、健康检查、故障恢复、脑裂和快照等。至于具体的协议实现如 Raft、ZAB 等不在本章做具体说明,将会在后面的章节做具体介绍。

CAP

1.什么是数据一致性?

      如图1/2,当用户向 DB1 插入数据 a 后,在向用户返回响应前,确保了 DB1、DB2 和 DB3 都有了 a 这个数据。所以在得到响应之后,用户不管访问那个库,都能保证获得到相同的数据。

2.什么是网络分区?

如图3所示,DB3 与 DB1 和 DB2 无法连通时,就会出现网络分区,在 DB1 和 DB2 修改的数据无法同步的 DB3,同样 DB3 修改的数据也无法同步到 DB1 和 DB2,这就出现网络分区。而 CAP 理论就提供一种思路和方法,去解决这个问题。

3.CAP理论如何解释上述的矛盾(一致性和网络分区)?

C:Consistency 一致性(数据一致)。

A:Availability 可用性,用户请求能够在有限的时间内返回响应(访问任意服务)。

P:Partition tolerance 分区容错性(分布式系统内部的网络故障)。

        根据 CAP理论,一个系统无法同时满足 C、A 和 P。而在分布式系统中要么实现 CP,要么实现 AP,为什么这么说?

        (1)分布式至少2台的机器,机器之间必须通过网络通信,既然是网络,就可能出现网络故障,如图3的情况,所以分布式系统必定满足 P。

        (2)在满足 A 的情况下(AP),如果向 DB1 插入数据 b,DB1 同步 DB2, 但在网络故障的情况下,DB1 无法同步 DB3, 导致数据不一致。在满足 A 的情况下, DB3 依然可以访问,但 read b时,无法获取数据。但访问 DB1 和 DB2 可以,从而导致读数据的不一致。

        (3)在满足 C 的情况下(CP),如果向 DB1 插入数据,DB1 同步 DB2, 但在网络故障的情况下,DB1 无法同步 DB3, 导致数据不一致。在满足 C 的情况下,由于数据不一致,访问数据会返回 error。

两阶段提交(2PC) 

阶段一

事务询问:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值