MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » 分布式系统翻阅笔记(二十二)-时钟和时钟同步

分布式系统翻阅笔记(二十二)-时钟和时钟同步

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次
分布式系统阅读笔记(二十二)-----时钟和时钟同步

时钟的基本概念

时钟

时钟在一般意义上指的是一个计算机的物理时间,每个计算机都会包括他们自己的物理时钟,不同的计算机的物理可能会不同。

时钟漂移

经过在同个地方的计算机,他们的物理也有可能会不一样,如果他们从刚刚开始相同的时间计时开始,过了1过月,1年也可能会有快又慢,这在专业名词上讲叫做时间漂移。本质的原因是每秒的时间偏移,经过日记月累之后,就会有可能达到1秒钟的差距,解决的办法很简单,就是过一段时间之后,将时间纠正回来就可以了。

UTC

UTC全称是Coordinated Universal Time,协调世界时,又称世界统一时间,用来进行高进度时间的同步。协调世界时以原子时秒长为基础,在此时刻上尽量接近于世界时的一种时间计量系统。

同步物理时间

同步物理时间的主要手段分为2External synchronization,靠的是UTC协调世界时,给定一个边界值D>0, 满足条件|S(t)-Ci(t)|<D,另外1个是Internal synchronization,同样给定时间边界D,相互之间进行同步,|Ci(t)-Cj(t)|<D

同步系统中的时间同步

我们首先在一般情况下进行考虑,比如2个进程,相互之间只允许进行消息传递来进行通信,如何进行事件同步,假设传输的时间为T(trans),假设发送进程P1发送的时间为t,P2的时间应该设置成t+T(trans),这个很好理解,基于这个思路继续,发送的传输时间一般不可能是固定的,可能受网络环境的影响或快或慢,所以定义了传输的时间上界u(max),下界u(min),则此时的抵达时间应该设置成t+(max+min)/2

Cristian时钟同步方法

Cristian的方法利用了时间服务器,连接上设备并且能够接受从UTC资源发来的信号进行同步,以UTC的时间作为同步的时间。定义一个进程p,一个TimeServer s,请求消息为M(r),接收消息M(r)M(r)中包含了从时间服务器中获取的最新的时间,进程p记录了收发的总延时T(round),则进程p接收到消息后,他的时间应该是p(t)=M(r)中的时间t+T(round)/2。方法大体的思路就是如此,重新体会一下这个方法有什么弊端,明显的一点是单点瓶颈问题,因为服务器是单一服务器,随时都可能挂,所以我们可以联想到的解决办法是提供服务器集群组的方式处理,这时单点问题解决了,但是万一有些进程故意发错的时间给接收进程呢,如何处理,这是一个典型的拜占庭将军问题了,这个暂时不讨论,下面的算法可以帮我们解决这个问题。

The Berkeley Algorithm

这个算法用的是Internal synchronization的方法,给定一组计算机,选出一个作为Coordinator,作为master,这个master选择机器中将要被同步的机器,叫做slave,通过计算与这些机器之间进行时间交换,平均快的和慢的时间,最终达到时间一致性,在比较的过程中,就可以排除明显偏差大的时间了。

The Network Time Protocol

CristianBerkeley算法都是偏向于用于小规模的内网中,而Network Time Protocol则是一种在因特网上的分布式时间服务。他定义了Time Service的结构。NTP有下面几个特点。

1、NTP提供了一个客户端可以从网络中精准同步UTC时间的客户端。

2、服务端通过接口的形式方便客户端的调用。

3、NTP服务器与服务器之间的时间同步是以层级控制的方式构成。1级节点同步22级节点,21)可能又同步23级节点,2(2)也可能23级节点。其中的时间交互协议通过信息之间的交换。

逻辑时间和时钟

逻辑时间,从字面上理解当然不同于物理时间,在分布式系统中,运用逻辑时间的例子也不少,假设L(i)表示的是消息事件的发生事件,当p1进程接收到的时候,就需要对时间做递增操作,L(i) = L(i) + 1,逻辑意义上的时间增加。

全局有序逻辑时间--Vector Clock

Vector Clock是向量时钟,可以可以保证全局有序的逻辑时间,通过V<t1, t2, t3....>ti保存了Pi进程的当前进行到的时间,当进程Pi接收到相应的消息事件时,则在对应的位置上ti上进行ti = ti + 1的操作,当做Vector Clock向量比较的时候,需要对V每个位置上进行比较,如果V1中的ti全部小于V2中的ti时,才算事件1早于事件2发生。


参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair

文章评论

每天工作4小时的程序员
每天工作4小时的程序员
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
老程序员的下场
老程序员的下场
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何成为一名黑客
如何成为一名黑客
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员都该阅读的书
程序员都该阅读的书
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
代码女神横空出世
代码女神横空出世
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
为什么程序员都是夜猫子
为什么程序员都是夜猫子
我的丈夫是个程序员
我的丈夫是个程序员
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员必看的十大电影
程序员必看的十大电影
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
鲜为人知的编程真相
鲜为人知的编程真相
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员和编码员之间的区别
程序员和编码员之间的区别
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
那些争议最大的编程观点
那些争议最大的编程观点
编程语言是女人
编程语言是女人
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
 程序员的样子
程序员的样子
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
一个程序员的时间管理
一个程序员的时间管理
Java程序员必看电影
Java程序员必看电影
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
漫画:程序员的工作
漫画:程序员的工作
我是如何打败拖延症的
我是如何打败拖延症的
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有