分布式系统之7、同步1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

达后,它根据所有的时间执行某一平均算法得一 新值,再根据新值调整时钟。
思考:各机器计算的新值一样吗?
二、逻辑时钟同步
1、基本概念
许多应用中,并不严格需要所有机器 都与UTC时间保持一致,而只需要所有 机器时间相同就够了,即系统保持一 个内部一致的时钟。这种时钟称为逻 辑时钟。 更进一步,很多问题中根本就不需要 时间严格一致,而只是需要多个事件 的发生顺序一致就可以。
它的时钟调到一个比发送时间大1的值
同一进程的每两个事件之间,必须至少滴答(即一个时
钟中断)一次
Lamport时间戳提供了一种对系统中所有事件完全排序的
方法
00 06 12 18 24 30 36 42 48 54 60
Hale Waihona Puke Baidu
00 08 16 24 32 40 48 56 64 72 80
00 10 20 30 40 50 60 70 80 90 10
3、令牌环算法

算法基本思想: 构造一个逻辑环 初始化时,进程0得到一个令牌,令牌绕环运 行 收到令牌的进程如果要使用临界区,则使用完 临界区后再传递令牌 不允许用同一个令牌进入另一个临界区。
令牌环算法
令牌环算法
优点: 不会发生饿死 进程崩溃比较容易处理 缺点: 令牌丢失的情况,检测令牌丢失非常困难
发起者或者其他特殊角色

两种基本选举算法
欺负算法 环算法
2、欺负算法

基本思想
比大小 最大者获胜当选
欺负算法

过程
当任何一个进程发现协调者不再响应请求时,它就发起
一次选举
P向所有编号比它大的进程发送一个ELECTION消息。 如果无人响应,P获胜,成为协调者。 如果有编号比它大的进程响应,则由响应者接管选举工
时间。
基本概念
时钟精确度 设UTC时间为t,机器的时间为C,则机器时钟的 精确度可以用一个常数ρ来表达: 1-ρ ≤ dC/dt ≤ 1+ρ 一般来说, ρ由生产厂商规定,称为最大偏移率。 同步间隔 最坏的情况下,两个计算机的时钟以相反的方向 偏离UTC时间,则要保证两个时钟误差不超过δ, 就必须至少δ/(2ρ)秒钟重新同步一次。
Cristian算法:从服务器得到当前时间
Cristian时钟同步算法

问题
时间回调——将导致严重后果 逐步调整时钟:即正常一个时钟中断将时钟
加10毫秒,而需要慢下来时则一个中断加9毫 秒,需要快时加11。
传输延迟的问题 测量估算法
3、Berkeley时钟同步算法

思想
主动式服务——与Cristian算法中的被动式时
界区,使用完毕向队列中的进程发送OK消息,删除自己的 任务。
分布式互斥算法
分布式互斥算法



优点: 实现了分布式互斥 不会发生死锁或饿死 不存在单个故障点 缺点: 反而有n个故障点,实际上比集中式算法差了n倍 需要自己维护组成员清单,处理进入、离开组和崩溃进程 的能力比较差 总之,实际上比集中式算法更慢,更复杂,花费更高,而 且更脆弱。 意义:说明分布式算法至少可以实现。

集中式互斥算法
集中式算法
优点: 保证了互斥的实现 公平——先来先服务 没有进程会处于永远等待状态,不会出现饿死 易于实现 缺点: 协调者是一个单故障点,如果协调者崩溃,则整个 系统瘫痪 协调者可能成为性能的瓶颈

2、分布式互斥算法

基本过程:
当一个进程想进入临界区时,它构造一个含有目标临界区

基本概念

两个概念:
先发生关系ab
事件a先发生,然后b才发生
如果a和b是同一个进程的两个事件,如果a在b之
前发生,则ab为真
如果a是一个进程发送消息的事件,b是另一个进程
的接收消息事件,则ab为真
并发事件
如果x和y事件发生在两个互不交换消息的进程中, xy不真,yx也不真
2、 Lamport时间戳

00 06 12 18 24 30 36 42 48 70 76
00 08 16 24 32 40 48 61 69 77 85
00 10 20 30 40 50 60 70 80 90 10
Lamport算法校正三个进程的不同时钟
三、选举算法
1、基本概念

为什么要进行选举?
许多分布式算法中需要一个进程来充当协调者、

时钟速率不正确时,机器时间与UTC之间的关系
2、Cristian时钟同步算法

基本思想
系统中有唯一一台时间服务器接收UTC时间,
其他机器则必须与时间服务器同步。
每台机器以不大于δ/(2ρ)秒的周期定期向时
间服务器发送消息询问当前时间
时间服务器收到后发送消息告知当前时间
CUTC
发送者收到服务器消息后将时钟调整为CUTC
同步(1)
内容

物理时钟同步 逻辑时钟同步
选举算法 互斥



一、物理时钟同步
1、基本概念

一致的系统时间是
分布式同步的基础 事件的顺序关系问题的解决基础

两个层面的时钟同步
绝对同步(物理同步)——物理时钟 相对同步(逻辑同步)——逻辑时钟

物理时钟——计算机系统的绝对时间
UTC:一种国际统一的科学物理时间,称为统一协调
最后消息返回到选举发起者,它计算出协调者之后发送
COORDINATOR消息宣布协调者
消息环系统环一周后被删除
环选举算法
四、互斥
基本概念

分布式互斥
解决分布式共享资源并发访问问题 比单机系统互斥复杂

算法
集中式互斥算法
分布式互斥算法
令牌环算法
1、集中式算法
最简单的一种互斥算法 基本过程: 选举一个协调者 任何一个进程要进入临界区,向协调者发送申请消 息 协调者根据临界区的使用情况同意或者拒绝申请者 的请求 协调者拒绝申请者的方式可以发送拒绝消息或者不 应答,但都将请求放入队列中
间服务器相反

过程
服务器主动定期询问每台机器的时间 服务器基于客户的回答,告知它们拨快或者
拨慢
Berkeley时钟同步算法
4、平均值算法


Cristian算法和Berkeley算法——集中式的算法。 平均值算法——非集中式算法
将时间划分为固定长度的再同步间隔R 第i次同步开始于T0+iR,结束于T0+(i+1)R 每次同步间隔开始,每台机器广播自己的时间 对于某一具体的机器,当所有的同步广播都到
作。P的工作完成。
最后选举获胜者向所有进程发送选举获胜的消息,声明
它成为协调者。
欺 负 选 举 算 法
3、环算法

基本过程
所有进程按照物理或者逻辑的顺序组成一个逻辑的环
当任何一个进程注意到协调者不工作时,它就自己构造
一个带有它自己进程号的ELECTION消息,发给它的后继者
如果后继者崩溃了,则跳过发给下一个 接收者将自己的进程号加入消息中,继续传递消息。

逻辑同步问题
若干分布式进程协同工作 对于任一事件a,为它分配一个所有进程都认
可的时间值C(a)
如果ab,则C(a)
<C(b)
时钟值C必须保证始终前进,不能倒退,所以
校正时间的操作是加上一个正值,而不是减去 一个正值
Lamport时间戳

Lamport算法
直接遵循先发生关系
所有消息都必须携带发送者时钟的时间 当接受者发现自己时钟比发送者的时钟早时,接受者将
名字、本进程号和当前时间的消息,发给所有进程。
一个进程收到另一个进程的请求消息时,根据自己与目标
临界区的状态关系反应:
若接受者不在也不想进入临界区,发送OK消息 接受者已经在临界区则不应答,只是把请求放入队列
接受者亦欲进入临界区,则将收到的请求时间戳与它发送
的请求时间戳比较,早的获胜进入。
发送者一直等待至其他所有进程返回OK消息,之后进入临
相关文档
最新文档