网站大量收购闲置独家精品文档,联系QQ:2885784924

分布式系统的同步分解.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.4 原子事务 6.4.2 事务模型 事务的特性(ACID) 持久性(Durable) 一旦一个事务提交,改变就是永远存在的。提交之后发生的任何错误都不可能使结果取消或丢失。 嵌套事务 嵌套事务 事务可以包含子事务,通常称作嵌套事务。顶层事务可以在不同的处理机上创建并行运行子事务,以提高性能简化编程。 6.4 原子事务 6.4.3 实现 私有工作空间 在进程开始一个事务时给它分配一个包含了所有需要访问的文件的私有工作空间,在事务提交或中止前所有的读写操作都是在私有工作空间而不是在真正的文件系统中进行的。 问题:所有内容拷贝到私有工作空间,代价难以承受。两种优化方法: 私有工作空间中只包含一个指向父辈工作区的指针。当事务处于最顶层时,它的工作区是真正的文件系统。 使用索引节点。索引是一个与判断文件所在磁盘块位置有关的数据块。该方法不将全部文件拷入私有工作空间,而只是将其索引拷入。 6.4 原子事务 6.4.3 实现 私有工作空间 使用索引节点(优化方法) 1 2 0 空闲块 0 1 2 磁盘 一个有三个数据块的文件的文件索引和磁盘数据块 (a) 6.4 原子事务 6.4.3 实现 私有工作空间 使用索引节点(优化方法) 1 2 0 0’ 3’ 0 1 2 一个事务修改第0块和附加块3后的情况 1 2 3’ 0’ 私有工作空间 起初的索引 (b) 6.4 原子事务 6.4.3 实现 私有工作空间 使用索引节点(优化方法) 1 2 0 3 1 2 3 0 (c)提交以后 如果事务成功结束,私有索引将被自动移到父辈工作区中 6.4 原子事务 6.4.3 实现 写前日志(计划列表) 文件真正被修改,但是在改动之前将一条记录写入稳定存储器的写前日志中。 日志工作例子:对事务中三条语句中的每一条,在执行之前都要写入一条日志,以记录新值和旧值。 x=0; y=0; BEGIN_TRANSACTION x=x+1; y=y+2; x=y*y; END_TRANSACTION x=0/1 x=0/1 y=0/2 x=0/1 y=0/2 x=1/4 日志 日志 日志 如果事务异常中止,可用日志备份初始状态,回滚。 6.4 原子事务 6.4.3 实现 两阶段提交协议 问题背景:在分布式系统中,提交操作可能需要在不同的机器上的多个进程的协作。两阶段提交协议是一种分布式系统中实现原子性提交的协议。 将“准备”写入日志 发送“准备”消息 将“就绪”写入日志 发送“就绪”消息 收集所有应答 写日志记录 发送“提交”消息 将提交写入日志 提交 发送“完成”消息 将“准备”写入日志 发送“准备”消息 将“就绪”写入日志 发送“就绪”消息 收集所有应答 写日志记录 发送“提交”消息 将提交写入日志 提交 发送“完成”消息 阶段1 阶段2 协调者 参与者 6.4 原子事务 6.4.4 并发控制 加锁法 两阶段加锁法 进程在增长阶段先请求它需要的所有锁,然后在收缩阶段释放它们。如图所示: 时间 锁的数目 锁点 增长阶段 收缩阶段 6.4 原子事务 6.4.4 并发控制 乐观的并发控制 思想 :“做自己想做的,有问题出现再说!” 处理冲突 记录下哪些文件被读写过,在提交时刻,检测其它事务以判断在本事务开始后,它的文件是否被其它事务修改过。如果被修改过,本事务将被终止;如果没有修改过,本事务可以提交。 优点:避免了死锁,允许最大的并行度。 缺点: 有时可能会失效,这时所有的事务都必须退回重新运行一遍。 6.4 原子事务 6.4.4 并发控制 时间戳 在一个事务开始做BEGIN_TRANSACTION时给它分配一个时间戳(唯一)。 系统中每个文件都有一个相关的读取时间戳和写入时间戳,以判断哪个已提交的进程最近一次读取或写入过该文件。 如果事务都很短小并且在时间间隔上比较大,那么当一个进程试图访问某个文件时,该文件的读写时间戳将低于当前事务的时间戳。(正常情况) 如果次序不正确,表明一个晚于当前事务开始的事务试图插入、访问文件并提交。这意味着当前事务开始过早,将其终止。 6.4 原子事务 6.4.4 并发控制 时间戳 时间戳方法举例:设有三个事务:α、β、γ。 α 很早以前已开始运行,并且要使用β和γ需要的所有文件,因此这些文件都将设成α的时间戳。 β和γ同时开始,但β的时间戳小于γ。 TRD TWR T (α) (α) (β) TRD TWR T (

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档