分布式系统知识学习(四)分布式时钟
分布式系统知识体系庞大而精妙,不花费大量的时间无法掌握。本文根据一些前人经验和自己摸索总结,由浅入深、由基础概念到实际运用,给出了一条学习曲线相对平滑的分布式学习攻略,希望和大家多多交流,共同进步。本篇为基础篇学习,涉及到了数百篇论文及博客资料,需要耐下心慢慢学习才可以体会到其精髓,欲速则不达。
分布式时钟
在单台机器上,我们很容易的就可以对所有的进程、事务进行排序,因为我们有一个统一的标准:CPU时钟。而对于多台机器,则相对麻烦,因为难免会出现CPU时钟周期不相同、时间延迟、或者人为造成时间的修改等等。为此,在分布式系统中,不同机器通讯的先后顺序是一个比较麻烦的问题。
总的来说,有几种解决方法:
1.同步中央时钟:对多台机器进行同步处理,使其时钟保持一致,如NTP协议。但是这样带来了一些问题,首先需要保持同步则需要定期进行通信,从而增加了额外的时延和带宽消耗。另外,该方法仅针对网络拓扑稳定的环境适用。因为如果有机器不断地增加、减少,是无法保证每台机器CPU时钟周期相同,也无法保证时钟同步。
2.局部排序:对每台机器单独进行排序,采取一些算法使其序列统一。如Lamport Clock,后续的vector clock,以及version clock等。
-
Lamport 时钟 经典论文必读。
-
Vector 时钟 Vector时钟是基于Lamport时钟的改进版本,旨在解决同时发生的事件的情况。 这篇博客值得一读 写得很好,值得一看
-
分布式时钟同步综述 学习完Lamport时钟和Vector时钟后,可以看一下这篇综述,算是对分布式时钟问题的总结。。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
解决卡米,安心卸载MIUI预装软件。