百度描述
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算法而言,主要还是集中于拷贝之间一致性的关系。通过消息来确定最终拷贝之间的状态。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!