分布式一致性协议

CAP

CAP是指在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。

常见注册中心对比:

分布式一致性协议_第1张图片

单主协议(不允许数据分歧):

整个分布式系统就像一个单体系统,所有写操作都由主节点处理并且同步给其他副本。例如主备同步、2PC、Paxos 都属于这类协议。

1:zab 协议

ZooKeeper 使用该协议实现

ZAB也是对Multi Paxos算法的改进,大部分和raft相同。

2:Raft协议

etcd 使用该协议实现

raft 是目前工业界广泛使用的分布式一致性协议, 被广泛应用在分布式系统中, 例如 ETCD、TiKV、Consul 等著名开源软件都使用了 raft 协议来实现分布式系统中的强一致性, paxos 算法作为分布式一致性算法的鼻祖, 其以难以理解和很难工程化著称, raft 的作者希望设计一种更简洁的算法来替代 paxos, 使其在保证正确性和可靠性的前提下能够容易理解和实现。

Raft算法是对Paxos算法的简化和改进。

3:Paxos 协议

Paxos有个很特别的就是协调者(proposer)只需等到超过1/2(多数派)的节点同意而不是全部节点,这样只有当1/2的节点同时出现故障整个系统才会有问题,加上同时这个限定条件后,这个系统的故障概率是极低极低的。

多主协议(允许数据分歧,去中心化):

所有写操作可以由不同节点发起,并且同步给其他副本。例如 Gossip、POW。

它们的核心区别在于是否允许多个节点发起写操作,单主协议只允许由主节点发起写操作,因此它可以保证操作有序性,一致性更强。

而多主协议允许多个节点发起写操作,因此它不能保证操作的有序性,只能做到弱一致性。

1:Gossip协议

Redis Cluster、Consul 使用了该协议

Gossip又被称为流行病算法,它与流行病毒在人群中传播的性质类似,由初始的几个节点向周围互相传播,到后期的大规模互相传播,最终达到一致性。Gossip协议被广泛应用于P2P网络,同时一些分布式的数据库,如Redis集群的消息同步使用的也是Gossip协议,另一个重大应用是被用于比特币的交易信息和区块信息的传播,Gossip算法每个节点都是对等的,即没有角色之分,Gossip算法中的每个节点都会将数据改动告诉其他节点。

2:Pow协议

比特币使用了该协议

Proof-of-work算法又被称为Pow算法,其实从这个算法的名称中我们能对它实现的功能窥见一二,工作量证明算法,那是否意味着工作量较大的某一个节点能够获得主动权呢?事实也是类似这个原理,大量的节点参与竞争,通过自身的工作量大小来证明自己的能力,最终能力最大的节点获得优胜,其他节点的信息需要与该节点统一。Pow最为人所熟知的应用是比特币,

分布式一致性协议主要分为两大类,分别是单主协议和多主协议,这里不介绍具体协议,主要是对比各协议之间的异同点,各协议与cap理论的关系。

你可能感兴趣的:(分布式)