链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
分布式系统的时间顺序
区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时间一致的问题随即也被提了出来,那么怎么处理分布式系统中的一致性问题,这里简单介绍下:分布式系统的时间顺序问题。如有解释错误或者不明,请及时提出指正。
分布式系统,最简单理解有多个服务节点,客户端发出请求,服务节点之间通讯,顺序记录更新服务器数据和日志。
分布式系统中的时间问题,如果简单去想,那么通过NTP时间同步,所有节点都通过去同步时间,然后根据进程发起的物理时间来排序,先不论时间同步中同步过程中的细微毫秒级差异,多个业务发起进程,在各个进程之间有关联关系,进程随着系统计算能力有差异,并且还有检查点的判断,一旦在顺序进程中出现了前物理时间某进程改变了检查点,那么在认为是同步处理的时候就会出现检查点状态改变导致业务逻辑的改变,这种情况理解下就是你在购物网站抢购的时候,货物剩余量在你发起交易的时候还有,但是确认过程由于网络和计算的延时,发现分布式系统中一边是交易已正常请求,但是实际货物记录中已下架。引入logical clock能较好的处理这种系统记录逻辑混乱的现象。
Logical clock称为lamport timestamps,这种概念里,先把分布式系统节点间交互分成三种类型:
1.分布式单个节点自己内部传递的事件。
2.分布式节点互相之间传递的事件。
3.分布式节点接收除自己之外的传递进来的事件。
同时再加一个逻辑时间顺序概念。
顺序叠加原则:这里整个系统顺序逻辑时间时间为T(),各个节点顺序为X()
1.初始发起节点为0.
2.节点内传递,X+1
3.节点间传递,T+1