分布式系统 时钟同步52页PPT
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程
➢ 服务器主动定期询问每台机器的时间 ➢ 服务器基于客户的回答,告知它们拨快或者拨 慢时间
时钟同步算法:Berkeley算法
实现方法
时间守卫程序
a)
b)
a) 时间守卫程序向所有 其他机器询问时钟值
b) 其他机器做出应答 c) 时间守卫程序通知每
台机器如何调整他们 的时钟
c)
时钟同步算法:Berkeley算法
时钟同步算法
• 系统基础模型
时钟同步算法
•
系统基础模型
时钟同步算法
时钟同步算法
1. Cristian算法 2. Berkeley算法 3. 平均值算法
时钟同步算法:Cristian 算法
基本思想
➢一台机器设为时间服务器(带有卫星接收器) ➢其他的每一台机器周期性地向时间服务器发送 请求消息已获得当前标准时间。 ➢时间服务器在短时间内将包含当前时间的消息 发送给请求时间机器。
SUMMER TEMPLATE
分布式系统 时钟同步
同步
寇迦南
1.时钟同步
引入 时钟同步
例子:UNIX中make程序的调用问题。
引入 时钟同步
例子:UNIX中make程序的调用问题 Make程序的作用是什么?
➢ 可以自动完成对源文件的编译。
引入 时钟同步
UNIX系统会把较大的程序分成多个源程序,当 一个源文件发生变化时(比如被修改后),只 需编译一个文件即可,不需要对所有的文件进 行编译。
input.c必须被5重151新编译。5155 t
input.o
input.c
引入 时钟同步
例如:如果源文件output.c的修改时间为5144且 对应目标文件output.o的修改时间为5145,那么, 不需要对output.c进行重新编译。
5144
5145
t
output.c
output.o
引入 时钟同步
✓ 精确记录从向时间服务器发送请求的起始时间T0 和接受到的应答的结束时间T1 。
✓ 当前服务器时间估计值 = CUTC+(T0- T1)/2
时钟同步算法:Berkeley算法
基本思想
➢ 主动式服务---与Cristian算法中的被动式时间 服务器相反 ➢ 适合于没有WWV接收器的系统
时钟同步算法:Berkeley算法
时钟同步算法:平均值算法
基本思想
➢ 将时间分成固定长度的再同步间隔R ➢ 第i次同步开始于T0+iR,结束于T0+(i+1)R ➢ 每次同步间隔开始,每台机器广播自己的时间 ➢ 对于某一具体的机器,当所有的同步广播都到
2.逻辑时钟
逻辑时钟
基本概念
➢ 许多应用中,并不严格要求所有的机器都与 UTC时间保持一致,而只需要所有机器时间相同 就够了,即系统保持一个内部一致的时钟。这种 时钟称为逻辑时钟。 ➢更进一步,很多问题中根本就不需要时间严格
物理时钟
物理时间概念
➢ UTC(统一协调时间),它是所有现代人使用 的时间。
引入 时钟同步算法
如果一台机器上有一个WWV接收器接收标准时间, 那么,时间同步算法的目的就是让所有机器的时 钟与该机器的时钟进行同步。
如果没有一台机器具有WWV接收器且每一台机器 都有自己的时钟,那么时钟同步算法的目的就是
逻辑时钟同步
如果两个进程不进行交互,那么它们的时钟也 无须同步。这是因为即使没有同步也察觉不出 来,并且也不会产生问题。 通常重要的不是所有的进程在时间上完全一致, 而是它们在事件的发生顺序上要达成一致。
Lamport 算法 (逻辑时钟同步算法)
Lamport 时间戳
➢ 为了同步逻辑时钟,Lamport定义了一个 称作“先发生”的关系。
先发生关系 a→b
事件a先发生,然后b才发生
✓ 如果a和b是同一个进程的两个事件,如果a在b之 前发生,则a→b为真 ✓ 如果a是一个进程发生消息的事件, b是另一个进 程的接收消息事件,则a→b也为真 先发生关系是一个传递关系,若a→b且b→c ,则 a→c 。
假定output.o的修改时间为5144,output.c被修改并
赋予的时间为5143,原因是output.c所在机器上的时
钟要比output.o所在机器上的时钟慢。
进行编译的 5144
计算机
进行编译的 5142
计算机
5145
5146
5147
创建 output.o
5143
5144
5145
创建 output.c
make程序在考察完所有源文件和其对应目标文 件的修改时间后决定哪些文件需要重新编译并 调用编译器对其进行编译。
分布式系统 时钟同步
在分布式环境中,由于时间不同步会造成的程 序不能正常运行。
分布式系统 时钟同步
在分布式环境中,由于时间不同步会造成的程 序不能正常运行。
为什么?
分布式系统 时钟同步
根据本地时 t 钟的时间
根据本地时 t 钟的时间
分布式系统 时钟同步
因此,make程序不调用编译器进行编译。 结果,最终的可执行的二进制程序将包含由旧 的源文件和新的源文件所产生的混合目标文件, 导致该可执行程序无法运行而程序员却不知道 原因而一直寻找代码的错误。
分布式系统 时钟同步
结论:在分布式系统中,时钟同步是非常重要 的,也是必不可少的。
引入 时钟同步
这个过程如何进行?
引入 时钟同步
这个过程如何进行? 当调用make程序时, make程序根据所有源文 件和对应目标文件的修改时间来决定是否对某 个源文件重新编译。
引入 时钟同步
例如:如果源文件input.c的修改时间为5155
且对应目标文件input.o的修改时间为5151,
那么,序知道input.c已被修改。
实现方法
时间守卫程序
a)
b)
a) 在3:00中时,时间守卫程序
把它的时间告诉其他机器,
并询问他们各自的时间。
b) 各台机器将它们各自的时间
与时间守护程序时间的差值
告诉时间守护进程。
c) 有了这些值,时间守护程序
计算出它们的平均值,并通
c)
知各台机器如何调整各自的
时钟。
时钟同步算法:平均值算法
Cristian算法和Berkeley算法---集中式算法 平均值算法---非集中式算法
时钟同步算法:Cristian 算法
时钟同步算法:Cristian 算法
存在问题
➢ 发送者如何根据时间服务器的返回值调整时间?
✓ 由于时间不能倒退,因此一种方法是根据时钟快 慢,中断服务程序调整(增大或减小)每次中断 所加的时间。
时钟同步算法:Cristian 算法
存在问题
➢ 如何处理从时间服务器发送的应答到发送者存 在的延迟?
➢ 服务器主动定期询问每台机器的时间 ➢ 服务器基于客户的回答,告知它们拨快或者拨 慢时间
时钟同步算法:Berkeley算法
实现方法
时间守卫程序
a)
b)
a) 时间守卫程序向所有 其他机器询问时钟值
b) 其他机器做出应答 c) 时间守卫程序通知每
台机器如何调整他们 的时钟
c)
时钟同步算法:Berkeley算法
时钟同步算法
• 系统基础模型
时钟同步算法
•
系统基础模型
时钟同步算法
时钟同步算法
1. Cristian算法 2. Berkeley算法 3. 平均值算法
时钟同步算法:Cristian 算法
基本思想
➢一台机器设为时间服务器(带有卫星接收器) ➢其他的每一台机器周期性地向时间服务器发送 请求消息已获得当前标准时间。 ➢时间服务器在短时间内将包含当前时间的消息 发送给请求时间机器。
SUMMER TEMPLATE
分布式系统 时钟同步
同步
寇迦南
1.时钟同步
引入 时钟同步
例子:UNIX中make程序的调用问题。
引入 时钟同步
例子:UNIX中make程序的调用问题 Make程序的作用是什么?
➢ 可以自动完成对源文件的编译。
引入 时钟同步
UNIX系统会把较大的程序分成多个源程序,当 一个源文件发生变化时(比如被修改后),只 需编译一个文件即可,不需要对所有的文件进 行编译。
input.c必须被5重151新编译。5155 t
input.o
input.c
引入 时钟同步
例如:如果源文件output.c的修改时间为5144且 对应目标文件output.o的修改时间为5145,那么, 不需要对output.c进行重新编译。
5144
5145
t
output.c
output.o
引入 时钟同步
✓ 精确记录从向时间服务器发送请求的起始时间T0 和接受到的应答的结束时间T1 。
✓ 当前服务器时间估计值 = CUTC+(T0- T1)/2
时钟同步算法:Berkeley算法
基本思想
➢ 主动式服务---与Cristian算法中的被动式时间 服务器相反 ➢ 适合于没有WWV接收器的系统
时钟同步算法:Berkeley算法
时钟同步算法:平均值算法
基本思想
➢ 将时间分成固定长度的再同步间隔R ➢ 第i次同步开始于T0+iR,结束于T0+(i+1)R ➢ 每次同步间隔开始,每台机器广播自己的时间 ➢ 对于某一具体的机器,当所有的同步广播都到
2.逻辑时钟
逻辑时钟
基本概念
➢ 许多应用中,并不严格要求所有的机器都与 UTC时间保持一致,而只需要所有机器时间相同 就够了,即系统保持一个内部一致的时钟。这种 时钟称为逻辑时钟。 ➢更进一步,很多问题中根本就不需要时间严格
物理时钟
物理时间概念
➢ UTC(统一协调时间),它是所有现代人使用 的时间。
引入 时钟同步算法
如果一台机器上有一个WWV接收器接收标准时间, 那么,时间同步算法的目的就是让所有机器的时 钟与该机器的时钟进行同步。
如果没有一台机器具有WWV接收器且每一台机器 都有自己的时钟,那么时钟同步算法的目的就是
逻辑时钟同步
如果两个进程不进行交互,那么它们的时钟也 无须同步。这是因为即使没有同步也察觉不出 来,并且也不会产生问题。 通常重要的不是所有的进程在时间上完全一致, 而是它们在事件的发生顺序上要达成一致。
Lamport 算法 (逻辑时钟同步算法)
Lamport 时间戳
➢ 为了同步逻辑时钟,Lamport定义了一个 称作“先发生”的关系。
先发生关系 a→b
事件a先发生,然后b才发生
✓ 如果a和b是同一个进程的两个事件,如果a在b之 前发生,则a→b为真 ✓ 如果a是一个进程发生消息的事件, b是另一个进 程的接收消息事件,则a→b也为真 先发生关系是一个传递关系,若a→b且b→c ,则 a→c 。
假定output.o的修改时间为5144,output.c被修改并
赋予的时间为5143,原因是output.c所在机器上的时
钟要比output.o所在机器上的时钟慢。
进行编译的 5144
计算机
进行编译的 5142
计算机
5145
5146
5147
创建 output.o
5143
5144
5145
创建 output.c
make程序在考察完所有源文件和其对应目标文 件的修改时间后决定哪些文件需要重新编译并 调用编译器对其进行编译。
分布式系统 时钟同步
在分布式环境中,由于时间不同步会造成的程 序不能正常运行。
分布式系统 时钟同步
在分布式环境中,由于时间不同步会造成的程 序不能正常运行。
为什么?
分布式系统 时钟同步
根据本地时 t 钟的时间
根据本地时 t 钟的时间
分布式系统 时钟同步
因此,make程序不调用编译器进行编译。 结果,最终的可执行的二进制程序将包含由旧 的源文件和新的源文件所产生的混合目标文件, 导致该可执行程序无法运行而程序员却不知道 原因而一直寻找代码的错误。
分布式系统 时钟同步
结论:在分布式系统中,时钟同步是非常重要 的,也是必不可少的。
引入 时钟同步
这个过程如何进行?
引入 时钟同步
这个过程如何进行? 当调用make程序时, make程序根据所有源文 件和对应目标文件的修改时间来决定是否对某 个源文件重新编译。
引入 时钟同步
例如:如果源文件input.c的修改时间为5155
且对应目标文件input.o的修改时间为5151,
那么,序知道input.c已被修改。
实现方法
时间守卫程序
a)
b)
a) 在3:00中时,时间守卫程序
把它的时间告诉其他机器,
并询问他们各自的时间。
b) 各台机器将它们各自的时间
与时间守护程序时间的差值
告诉时间守护进程。
c) 有了这些值,时间守护程序
计算出它们的平均值,并通
c)
知各台机器如何调整各自的
时钟。
时钟同步算法:平均值算法
Cristian算法和Berkeley算法---集中式算法 平均值算法---非集中式算法
时钟同步算法:Cristian 算法
时钟同步算法:Cristian 算法
存在问题
➢ 发送者如何根据时间服务器的返回值调整时间?
✓ 由于时间不能倒退,因此一种方法是根据时钟快 慢,中断服务程序调整(增大或减小)每次中断 所加的时间。
时钟同步算法:Cristian 算法
存在问题
➢ 如何处理从时间服务器发送的应答到发送者存 在的延迟?