论文笔记:Time, clocks, and the ordering of events in a distributed system

论文笔记:Time, clocks, and the ordering of events in a distributed system

分布式系统中很难获知全局的全序关系,论文中提出一种方法,可以基于 Happened Before 这种偏序关系(因果一致性),扩展出强一致性的全序关系。

Happened Before:

论文中以此关系建立了逻辑时钟(Lamport Scalar Clock),用于确立 Happened Before 偏序关系:

该条件可以分解为以下两个条件:

从而其实现需要满足以下两个要求:

由 A comprehensive study of Convergent and Commutative Replicated Data Types 中指出 Convergent 的充分非必要条件:

  1. Values partially ordered (monotonic)
  2. Merge(x,y) := the least upper bound of x, y (idempotent & commutative)
  3. Communication channel: eventually-reliable p2p channel

可以理解 IR1 保证了 monotonic,IR2(a)中merge为max函数,而在系统中 merge 这一事件也应使时钟增加,因此得到 IR2(b)。

接下来我们只需定义时钟相等时如何排列事件,即可得到全序关系。

但是这种全序关系存在异常行为:

论文中进一步提出每个进程使用各自的物理时钟来得到更强的时钟的可能。首先增强时钟的条件:

然后给出了物理时钟的必要约束:

这一要求约束了物理时钟的准确率(不能太快,也不能太慢)

这一要求约束了不同节点时钟之间的同步状况(任意两个节点时钟不能相差太多)

进而给出了基于物理时钟达成全序关系的实现要求:

其中:

特别需要注意的是:

IR1' 要求时钟不能逆流

IR2' 相当于估算了对端节点传播过来后的这一时刻的最早物理时钟


Shapiro, M., Preguiça, N., Baquero, C., & Zawirski, M. (2011). A comprehensive study of Convergent and Commutative Replicated Data Types.

Lamport, L. (1978). Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7), 558–565. doi.org/10.1145/359545.

编辑于 2018-03-07

文章被以下专栏收录