分布式系统的同步.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o 两个问题:时间决不能倒退, 延迟 o 假设:每秒产生100次中断, 每次中断将时间加10毫秒 若调慢时钟,中断服务程序 每次只加9毫秒; 若加快时钟,则加11毫秒。 传播时间
12
Berkeley 算法 – 主动式方法
1. 2. 3.
时间监控器定期查询其他机 器时间 计算出平均值 通知其他机器调整时间
–
基本方法:
–
问题:
– – –
19
集中式算法(仿照单处理机系统的方法 )
协调者:确定那个进程可进入临界区 通信量:3个消息:请求-许可-释放
C
C
C
缺点:单点失败 单协调者会成为执行的瓶颈
20
Win Thread 临界区
CreateMutex() WaitForSingleObject() ReleaseMutex() InitializeCriticalSection() EnterCriticalSection() LeaveCriticalSection()
第3章 分布式系统的同步
中国科技大学软件学院
丁箐
主要内容
3.1 时钟同步 3.2 互斥 3.3 选举算法 3.4 原子性事务 3.5 分布式系统中的死锁
2
主要内容
3.1 时钟同步 3.2 互斥 3.3 选举算法 3.4 原子性事务 3.5 分布式系统中的死锁
3
3.1 时钟同步
分布式算法的特点
1.
14
多个外部时间源法
例:OSF DCE方法
1. 接受所有时间源的当前UTC区间 2. 去掉与其他区间不相交的区间 3. 将相交部分的中点作为校准时间
时间
15
使用同步时钟
1. 2. 3.
最多一次消息提交
每个消息携带一个ID和一个时间印ts(timestamp) 服务器的表T中,记录每个连接C最近的时间印t 如果到达的消息m,ts(m)<t, 则拒绝m
并发事件(concurrent)
6
Lamport算法
对每一事件a,在所有进程中都认可给它分配 一个时间值C(a)
–
–
–
if ab;则C(a)<C(b) a,b C(a) C(b) C是递增的
校正算法
– –
ab, if C(b)<C(a), 则C(b) = C(a) +1
7
Lamport算法
• • • •
服务器要一直保存一个全局变量 G = CurrentTime – MaxLifetime – MaxClockSkew 所有<G的时间印从表T中清除 对于具有新的ID的到达消息m,如果ts(m)<G则拒绝m, 否则,接受m 按照一定时间间隔T,定期地将G写入磁盘。 当系统重启后,G’=G+T
– – – –
稍快时钟
最大偏移率 精确时钟: dC/dt =1 快时钟: dC/dt 〉1 慢时钟: dC/dt < 1
时钟时间,C
dwenku.baidu.com/dt=1 最佳时 钟 稍慢时 dC/dt<1 钟
UTC,t
11
Christian’s 算法 -- 逐步调整法
时间服务器,可接受WWV的UTC时间 每隔δ/2ρ校准时间( 允许误差δ ,存在误差ρ )
17
主要内容
3.1 时钟同步 3.2 互斥 3.3 选举算法 3.4 原子性事务 3.5 分布式系统中的死锁
18
3.2 互 斥
基本概念
–
当一个进程使用某个共享资源,其他进程不允许对这个资源 操作 对共享资源进行操作的程序段 信号量、管程 死锁 活锁 饥饿
临界区(Critical Section):
时间守护 3:00 3:00 3:00 3:00 +25 -10 -20 3:00 0 3:05 +5 +15 网络
3:25 (a)
2:50
3:25 (b)
2:50
3:05 (c)
3:05
13
平均值算法 – 非集中式方法
将时间划分成固定长度的再同步间隔,第i次 间隔开始于T0+iR,而结束于 T0+(i+1)R 2. 所有机器广播自己的时钟时间 3. 启动本地计时器收集在S时间间隔中到达的 其他机器广播的时间 4. 执行平均时间计算算法,得到新的时间值 (取平均值,去掉两端值 )
铯原子钟:9192631770次跃迁=1秒 TAI秒:国际原子时间 UTC秒:世界时间(在TAI秒中加入闰秒) 时间服务:WWV电台、GEOS卫星
10
20
10
时钟同步算法
如何与现实时钟同步 如何使不同机器之间相互同 步
dC/dt>1
设机器时钟值Cp(t), t 为UTC 时间
相关信息散布在多个场地上 每个进程只能基于本地信息做决定
应避免因单点故障造成整个系统的失败
不存在公共时钟或精确的全局时间
4
时钟同步问题
例:makefile误差
output.o : cc –C output.c
进行编译的 计算机
2144
2145 创建output.o
2146
2147
根据本地时 钟的时间
0 0 6 12 18 24 30 36 42 48 54 60 D A 1 0 8 16 24 32 40 48 56 64 72 80 C B 2 0 10 20 30 40 50 60 70 80 90
100
0 0 6 12 18 24 30 36 42 48 70 76 D A
1 0 8 16 24 32 40 48 61 69 77 85 C B
2 0 10 20 30 40 50 60 70 80 90
100
时 间
慢
(a)
快
慢
(b)
快
8
物理时钟与现实时钟
(1)如何用现实世界的时钟将它们同步起来; (2)如何使各时钟之间保持同步。
太阳日:连续的两次日中天的时间 太阳秒:solar-day/86400 平均太阳秒:如,格林威治时间
9
现实时钟
16
使用同步时钟
1. 2. 3.
基于时钟的缓存一致性
当客户读取一个副本到缓存时,设置一个租期(lease) 在租期过期之前,客户可更新副本,重续租期 如果已经过期,缓存中的副本失效
改进的一致性协议 • 当客户修改文件时,只需将所有没有到期的缓存副 本设为无效 • 如果某个客户崩溃,则等待直到该客户的租期过期
进行编辑的 计算机
2142
2143
2144 创建output.c
2145
根据本地时 钟的时间
时间
时间
5
逻辑时钟
计时器:石英晶体+计数器 时钟偏差(clock skew) 逻辑时钟:相对时间 物理时钟:真实时间 “之前”关系:
– –
–
事件a在b之前出现,则ab a为发送消息m,b为接收m,则ab 具有传递性:ab, bc,则ac