- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 分布式同步控制 东北大学信息学院 于 戈 2006年4月 主要内容 5.1 物理时钟同步 5.2 逻辑时钟同步 5.3 选举算法 5.4 互斥控制 5.5 分布式事务管理 5.6 分布式死锁处理 5.1物理时钟同步 分布式协同处理 基于时间的同步 分布式算法的特点 相关信息散布在多个场地上 每个进程只能基于本地信息做决定 应避免因单点失败造成整个系统的失败 不存在公共时钟或精确的全局时间 时钟同步问题 例:makefile误差 物理时钟与现实时钟 日中天(transit of the sun):太阳升到一天的最高点 太阳日:连续的两次日中天的时间 太阳年:地球围绕太阳旋转360o(一周)。 太阳秒:solar-day/24*3600=solar-day/86400 平均太阳秒:n solar-days/n*86400 如,格林威治时间 现实时钟 铯133原子钟:9,192,631,770次跃迁/1秒 TAI秒:国际原子时间 UTC秒:世界时间(在TAI秒中加入闰秒) Universal Coordinated Time 统一协调时间 时间服务:WWV电台、GEOS卫星 时钟同步算法 如何与现实时钟同步 如何使不同机器之间相互同步 设进程P的机器时钟值Cp(t), t 为UTC时间 最大偏移率 精确时钟: dC/dt =1 快时钟: dC/dt 〉1 慢时钟: dC/dt 1 Christian算法 -- 逐步调整法 时间服务器,可接受WWV的UTC时间 每隔δ/(2ρ)校准时间( 允许误差δ ,存在误差ρ ) 校准原则:单调递增↑ Berkeley 算法 – 主动式方法 时间监控器定期查询其他机器时间 计算出平均值 通知其他机器调整时间 平均值算法 – 非集中式方法 划分固定时间间隔R; 在每个间隔,所有机器广播自己的时钟时间 启动本地计时器收集在S时间间隔中到达的其他机器广播的时间 执行平均时间计算算法,得到新的时间值 多重外部时间源法 同步时钟的应用 最多一次消息提交 每个消息携带一个ID和一个时间戳ts(timestamp) 服务器的表T中,记录每个连接C最近的时间印t 对到达的消息m,如果ts(m)t, 则拒绝m 同步时钟的应用 基于时钟的缓存一致性 当客户读取一个副本到缓存时,设置一个租期(lease) 在租期过期之前,客户可更新副本,重续租期 如果已经过期,缓存中的副本失效 5.2 逻辑时钟同步 计时器:石英晶体+计数器 时钟偏差(clock skew) 物理时钟:真实时间 逻辑时钟:相对时间 “之前”关系: ? 事件a在b之前出现,则a?b a为发送消息m,b为接收m,则a?b 具有传递性:a?b, b?c,则a?c 并发事件(concurrent) 两个事件相互对立。既不a?b,不 b ? a Lamport算法 C(a)表示事件a的时钟值。性质: if a?b;则C(a)C(b) ?a,b C(a)? C(b) C是递增的 校正算法 a?b, if C(b)C(a), 则C(b) = C(a) +1 Lamport算法 全序多播(1) 问题:两个进程分别对同一个复制数据库进行更新时,造成不一致状态 原因:全局次序不一致。u1→u2; u2→u1 全序多播(2) 解决方案:全序多播 发送进程多播发送消息m时,给m带上当前时间戳ts 当接收进程收到消息m后,存放其局部队列q,按时间戳排序 接收进程向所有进程多播发送应答 当消息m被所有进程应答,且排在队列q队首后,方可处理 定理:各个进程的局部队列的值最终都相同 全序多播(3) 举例 时间戳向量(1) 因果性(causality): 如果事件a,b存在因果关系。a为因,b为果,则C(a)C(b) Vector timestamp 如果VT(a)VT(b),则a与b为因果关系 Vi[i]=n, 在Pi中发生了n个事件 Vi[j]=k,在Pj中发生了k个事件 修改规则 当进程Pi发送消息m时, Vi[i]=Vi[i]+1, vt(m)=Vi 当进程Pj收到m后,Vj[k]=max{Vj[k],vt(m)[k]} 时间戳向量(2) Pi消息m在进程Pk递交的条件: vt(m)[i] = Vk[i]+1 vt[m][j]≤Vk[i] for all i≠j 时间戳向量(3) 全局状态(1) 局部状态: 进程正在处理的变量值、对象状态等 例:分布库系统中的数据库记录 全局状态: 由每个进程的局部状态和正在传递的消息组成 一致性状态: 符合逻辑关系----时钟次序 例:P Q,如有Q的接收状态,必有P的发送状态 全局状态(2) (a) 一致性割集 (b
文档评论(0)