Paxos 协议(Paxos Protocol)

即使无法解决分布式系统异步通信中的共识问题,放弃Termination属性后我们仍可以找到实用的解决方案(Practical Solution),Paxos就是其中之一。

系统模型

  • 进程间通过消息通信
  • 消息是异步的:不限制传输延迟,但是在正确的进程间消息最终总能送达
  • 进程可以重启并恢复状态(restart and remember)

角色

Paxos协议中进程有三种基本的角色:

  1. Proposers 提议者
    提出一个想要达成共识的数值
  2. Acceptors 接收者
    选择达成共识的数值
  3. Learners 学习者
    学习Proposers与Acceptors已达成共识的数值

一个进程可以承担多个角色。

继续阅读“Paxos 协议(Paxos Protocol)”

Consensus Problem 共识问题

系统工程课上教授讲解了Consensus问题,以及两种解决方法。本文主要介绍什么是Consensus,以及在分布式系统异步通信中的问题。

共识问题

Consensus Problem翻译为共识问题,指多个实体在某事上达成一致的过程,具体表现为所有进程决定同一个值。
Consensus is to have several different entities to agree on something.
All processes agree on a common value.

共识的应用诸如:

  • What transactions to commit to a database in which order
  • State machine replication (每个副本执行相同的客户请求集合,并且以等价的顺序处理请求,以保证副本产生相同的输出)
  • Atomic broadcast
  • Leader election
  • Mutual exclusion

与Consistency一致性的区别在于:一致性强调同一个数据的多个副本保持对外呈现状态的一致性。如当修改一个副本的数据时,其他副本如何获取到该修改。包括严格一致性、强一致性(顺序一致性、线性一致性)、弱一致性(最终一致性)等。共识问题强调达成一致性的过程

“一致性描述的是结果状态,共识则是一种手段。达成某种共识并不意味着就保障了一致性(这里的一致性指强一致性)。只能说共识机制,能够实现某种程度上的一致性。”分布式系统的一致性与共识性

继续阅读“Consensus Problem 共识问题”