零点课堂 | 解读——分布式系统的时间顺序(1)

区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时间一致的问题随即也被提了出来,那么怎么处理分布式系统中的一致性问题,这里简单介绍下:分布式系统的时间顺序问题。如有解释错误或者不明,请及时提出指正。

分布式系统,最简单理解有多个服务节点,客户端发出请求,服务节点之间通讯,顺序记录更新服务器数据和日志。

那么用户1-2和服务器节点A-B-C的时间有可能都是不一样的,那么这个请求数据的记录是怎么排序和处理。Lamport(对!又是这位大神,2013图灵奖)1978年提出一个logical clock的概念。

分布式系统中的时间问题,如果简单去想,那么通过NTP时间同步,所有节点都通过去同步时间,然后根据进程发起的物理时间来排序,先不论时间同步中同步过程中的细微毫秒级差异,多个业务发起进程,在各个进程之间有关联关系,进程随着系统计算能力有差异,并且还有检查点的判断,一旦在顺序进程中出现了前物理时间某进程改变了检查点,那么在认为是同步处理的时候就会出现检查点状态改变导致业务逻辑的改变,这种情况理解下就是你在购物网站抢购的时候,货物剩余量在你发起交易的时候还有,但是确认过程由于网络和计算的延时,发现分布式系统中一边是交易已正常请求,但是实际货物记录中已下架。引入logical clock能较好的处理这种系统记录逻辑混乱的现象。

Logical clock称为lamport timestamps,这种概念里,先把分布式系统节点间交互分成三种类型:

1.分布式单个节点自己内部传递的事件。

2.分布式节点互相之间传递的事件。

3.分布式节点接收除自己之外的传递进来的事件。

同时再加一个逻辑时间顺序概念。

顺序叠加原则:这里整个系统顺序逻辑时间时间为T(),各个节点顺序为X()

1.初始发起节点为0.

2.节点内传递,X+1

3.节点间传递,T+1

4.节点接收除自己之外的传递(T and X)+1

那么如果再定义一个节点事件顺序,对节点A.B.C排序。假定发生顺序A<B<C,在上图中,事件发生顺序为:

C-1(T=1)  B-1(T=2)  B2(T=3)  A1(T=4)  A2(T=5)  B4(T=6)  B5(T=7)  C4(T=8)  C5(T=9)  A4(T=10)

B-3(T=4)  C-2(T=5)  C-3(T=6)  A-3(T=7)

问题来了T(4.5.6.7)发生了重复,那么就用之前说的A<B<C原则

以B-4和C-3作比较:A<B<C,那么B-4就理解为发生在C-3之前。推导B-4–>C-3。B-4发生在C-3之前。这个前提是我们已知三个节点进程发生的关系顺序,在实际情况下这个也有可能是很难进行判断的。所以对于并发情况没有很好的一致性判断。

本文由 零点财经 作者:tao 发表,其版权均为 零点财经 所有,文章内容系作者个人观点,不代表 零点财经 对观点赞同或支持。如需转载,请注明文章来源。
分享生成图片
71

发表回复

零点课堂 | 解读——分布式系统的时间顺序(1)

2021-06-25 10:10:13

区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时间一致的问题随即也被提了出来,那么怎么处理分布式系统中的一致性问题,这里简单介绍下:分布式系统的时间顺序问题。如有解释错误或者不明,请及时提出指正。

分布式系统,最简单理解有多个服务节点,客户端发出请求,服务节点之间通讯,顺序记录更新服务器数据和日志。

那么用户1-2和服务器节点A-B-C的时间有可能都是不一样的,那么这个请求数据的记录是怎么排序和处理。Lamport(对!又是这位大神,2013图灵奖)1978年提出一个logical clock的概念。

分布式系统中的时间问题,如果简单去想,那么通过NTP时间同步,所有节点都通过去同步时间,然后根据进程发起的物理时间来排序,先不论时间同步中同步过程中的细微毫秒级差异,多个业务发起进程,在各个进程之间有关联关系,进程随着系统计算能力有差异,并且还有检查点的判断,一旦在顺序进程中出现了前物理时间某进程改变了检查点,那么在认为是同步处理的时候就会出现检查点状态改变导致业务逻辑的改变,这种情况理解下就是你在购物网站抢购的时候,货物剩余量在你发起交易的时候还有,但是确认过程由于网络和计算的延时,发现分布式系统中一边是交易已正常请求,但是实际货物记录中已下架。引入logical clock能较好的处理这种系统记录逻辑混乱的现象。

Logical clock称为lamport timestamps,这种概念里,先把分布式系统节点间交互分成三种类型:

1.分布式单个节点自己内部传递的事件。

2.分布式节点互相之间传递的事件。

3.分布式节点接收除自己之外的传递进来的事件。

同时再加一个逻辑时间顺序概念。

顺序叠加原则:这里整个系统顺序逻辑时间时间为T(),各个节点顺序为X()

1.初始发起节点为0.

2.节点内传递,X+1

3.节点间传递,T+1

4.节点接收除自己之外的传递(T and X)+1

那么如果再定义一个节点事件顺序,对节点A.B.C排序。假定发生顺序A<B<C,在上图中,事件发生顺序为:

C-1(T=1)  B-1(T=2)  B2(T=3)  A1(T=4)  A2(T=5)  B4(T=6)  B5(T=7)  C4(T=8)  C5(T=9)  A4(T=10)

B-3(T=4)  C-2(T=5)  C-3(T=6)  A-3(T=7)

问题来了T(4.5.6.7)发生了重复,那么就用之前说的A<B<C原则

以B-4和C-3作比较:A<B<C,那么B-4就理解为发生在C-3之前。推导B-4–>C-3。B-4发生在C-3之前。这个前提是我们已知三个节点进程发生的关系顺序,在实际情况下这个也有可能是很难进行判断的。所以对于并发情况没有很好的一致性判断。