[区块链]分布式一致性之paxos算法个人见解

百度描述

Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。

应用场景

民主选举
分布式文件系统或者分布式数据库中多客户端并发读写数据;
分布式消息一致性
一台机器中多个进程/线程达成数据一致性
分布式存储中多个副本响应读写请求的一致性。

核心思想

和拜占庭将军问题类似,少数服从多数。且至少是三个数量以上。
Paxos解决这一问题利用的是选举,少数服从多数的思想,只要2N+1个节点中,有N个以上同意了某个决定,则认为系统达到了一致,并且按照Paxos原则,最终理论上也达到了一致,不会再改变。这样的话,客户端不必与所有服务器通信,选择与大部分通信即可;也无需服务器都全部处于工作状态,有一些服务器挂掉,只有保证半数以上存活着,整个过程也能持续下去,容错性相当好。

服从就近原则,即在实效上是最新提出来,就应该服从最新的决定,抛弃旧决定。

一致性区分

对于一致性CAP原则关系型数据库中ACID的一致性两者明显有区别。

分布式领域CAP理论,
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性
定理:任何分布式系统只可同时满足二点,没法三者兼顾。

关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区:
Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。
Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。
Durability. 一旦事务完成,就不能返回。

从两者定义上来看是截然不同的。前者更多的是对副本冗余的处理。即存在多个拷贝的时候,拷贝和拷贝之间的一致性。
而后者更多是集中于事务,对于事务进行前后的数据库状态一致性。
后者明显不存在拷贝的关系,因此两者没有明显的关联。
对于paxos算法而言,主要还是集中于拷贝之间一致性的关系。通过消息来确定最终拷贝之间的状态。

你可能感兴趣的:(区块链,区块链,数据库,区块链,分布式计算,选举,blockchain)