(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf_第1页
(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf_第2页
(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf_第3页
(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf_第4页
(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机软件与理论专业论文)业务对象管理中恢复机制的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 本文对高效应用服务器系统中业务对象管理的内存事务恢复机制进行了研 究。为达到内存事务处理快速高效而且f 1 志丌销低的要求,提出并实现了事务 处理在校糊检查点( f u z z yc h e c k p o i n t ) 过程中使用物理f f 志,在其它情况下使 用次底层逻辑门基的方案,从而减少了内存事务同志持久化的丌销。该方案比 前人的方法具有更少的时间和空问丌销。本文义提j 了标记脏页的方法,解决 了乒乓检查点( p i n g p o n gc h e c k p o i n t ) 的一份内存脏页要往磁盘上写两次的问 题,减少了往磁盘上i 0 的数据量。论文还讨论了系统在不同时问点上崩溃后 的恢复问题以及恢复策略的应用方法。最后给出了将恢复方法应用于电信计费 系统的实例。 关键词:内存事务业务对象日志检查点恢复机制 a b s t r a c t t h ee m p h a s i so ft h i sp a p e ri so nm o r ee f f i c i e n tm a i nm e m o r yt r a n s a c t i o nr e c o v e r y a p p r o a c h e si nt h ec o n t e x to fp e r f o r m a n c ec r i t i c a la p p l i c a t i o ns e r v e r s i no r d e rt om a k e t h et i m ea n ds p a c ec o s to ft r a d i t i o n a lf u z z yc h e c k p o i n ta p p r o a c hm u c hl o w e r , an o v e l a p p r o a c hi sp r o p o s e df i r s t ,w h o s em a i ni d e al i e si nt h es t r u c t u r a lm i x t u r eo fp h y s i c a l a n dl o g i c a ll o gi n s t e a do fp u r ep h y s i c a ll o g h e r es t r u c t u r a lm i x t u r e se x a c tm e a n i n g i st oa p p l yp h y s i c a ll o gi nt h ec o u r s eo ff u z z yc h e c k p o i n t ,a n dl o g i c a ll o gi nt h er e s to f t h ec h e c k p o i n tt i m ei n t e r n a l t h e nam a r k i n ga p p r o a c ho fd i r t yp a g e si sp r o p o s e d , w i t hw h i c ht h ee x p e n s i v et w i c ed i s kw r i t i n gi nt r a d i t i o n a lp i n g p o n gc h e c k p o i n t a p p r o a c hi sa v o i d e d ,a n dt h ea d a p t i o no ft h en e wf u z z yc h e c k p o i n ta p p r o a c hi n s e v e r a lr e p r e s e n t a t i v es c e n a r i o si s s u g g e s t e d f i n a l l y ,a na p p l i c a t i o n o ft h en e w a p p r o a c h e si nat e l e c o m m u n i c a t i o nb i l l i n gs y s t e mi sg i v e n k e y w o r d s :m a i nm e m o r yt r a n s a c t i o n b u s i n e s so b j e c t l o gc h e c k p o i n t t r a n s a c t i o nr e c o v e r y 创新性声明 本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢巾所罗列的内容外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其他教育机构的学位或证书而使, j 过的材料。与我一同工作的同志对本研究所做 的任何贞献均已在论文中作了明确地说并表示了谢意。 奉人签名三豇肄同期上鲤互_ 上7 乙一 关于论文使用授权的说明 本人完全了解两安电子科技大学有关保留和使用学位论文的规定,即:学校 有权保留送交论文的复印件,允许查阅和借阅论文:学校可以公布论文的全部或 部分内容,1 j _ 以允许采用影印、缩印或其他复制手段保存论文。( 保密的论文在 解密后遵守此舰定) 本人签名j 益壶盈! f f l 期! 兰l 上j 乒 导师签名塞垂型 几期 兰竺! 兰 :二2 第一苛绪论 第一章绪论 1 1 问题的由来 随着信息化在全社会的同益普及,许多应用领域对计算机软、硬件性能的要 求越来越高。在电信、会融以及军事指挥控制等领域,存在这样一些特点,即: 数掘量庞大,实时性要求高,同时还需有安全性、可靠性的保证。因此,这一类 的应 _ j 既要有高档次的硬件设备,也要有效率高的软件系统。以电信领域为例, 我旧棚订世界上规模最大的用户群,到2 0 0 1 年底为止,我国固定电话用户约1 7 亿户,移动电话用户约1 3 亿户。目前,移动电话用户还在以平均每月5 0 0 万户 的速度增加。庞火的用户群造就了规模庞大的电信网络。大多数的电信业务都有 较高的实刚性要求,例如:电话路由选择、号码翻译、电话记帐卡业务,移动通 信业务,电信实时记费营帐等。显然,此种类型的应用需要高效、可靠的软件保 b e 。 扯深圳矾代公司与西安电子科技大学软件上程研究所的合作项目“电信 移动计费系统的d s s a 研究”以及“十血”国防预研项目“可信软件工程 技术”1 2 1 论u 及研究工作中,我们深刻体会到上述需求的迫切性,并对此展丌了 一系列较为深入的研究。本文属于这一系列研究工作的组成部分。 1 2 应用对象的主要特点 以r 乜信领域为例,f jn “很多关键业务的应用服务器系统要求提供高性能的数 l i :访i ;q 能力,g f 务1 1 日碰时问往往要求在儿个毫秒到儿十个毫秒的数量级。闪此 此类应j j 系统都采用典型的三层体系结构( t h r e e t i e ra r c h i t e c t u r e ) 1 3 1 ,以提高应用 系统的必洒。p i 二利。比能。 :,:绵构- l ,柯两刘客户机服务器,如劁1 1 所示。第一层通常足数掘:竹理 节t i ,j e 核心足传统的基于磁盘的天系数据j 车管理系统r d b m s ( r e l a t i o nd a t a b a s e m a n a g e m e n ts y s t e m ) 。第二层f 也叫做中问层) 处理与具体应用相关的业务逻辑 或计算,并f 沁第一层发f l j 数掘处理服务清求。我们习惯称其为应用服务器,它既 是筇:;的客户机,又是第三层的服务器,是整个应h 系统的核心。第三层足用 户界嘶j 。:,卜要负责与用户的交互。 图1 1 麻川系统三层休系结构示例 应1 l 【j 服务器 本文。 经常用到“业务对象”一词,它是指应用服务器在执行业务逻辑时要 访问处理的数扼对象。在电信讣费应用中具体的就是指话单文件、费率表,计费 规则、用户属性表,以及其它管理数据。大多数关键业务的应用服务器在设计时 都面临一个j e 刷的问题:有大量的和以不同方式输入的业务对象;由于服务性能 的要求,需受在系统运行时长期维持在内存中,以减少对磁盘数据库的访f 、口j 次数。 此时由卡数据量庞大,业务对象的有效组织和管理变得异常复杂【】。 日前解决f 二述f u j 题的主要方法有以下几种: 1 ) 直接使用商用磁盘驻留数据库系统( d r d b - - d i s kr e s i d e n td a t a b a s e ) 最早的也是最经典的业务对象组织与管理是使用商用的d r d b 。其方 法是:通过增加内存等手段,使得尽可能多的数据被缓存在内存中,以减少 访问磁盘数掘的等待时间。应用进程可以直接使用s q l 访问业务对象,应用 丌发很简单。但该方法并不能使应用服务器性能有很大的改善,原因在于”i : 在设计实现传统d r d b 系统的年代,计算机系统的内存容量往往很有限,与 磁批十比价懈 d 贵。基于这样的现实,d r d b 在设计时都假设只有少部分数 据在内存缓存r f l ,数据主要存储在磁盘上,磁盘i o 是主要的性能瓶颈。因 此改蒋系统性能一t 要足减少磁盘访问次数,而不是改善内存和c p u 的使用。 返心想,【 土渗透到d r d b 设计的各个方面,例如:查询优化策略,数据组 织管理,数据的访问模式等。当应用提出更高性能要求时,尤其在目前的电 信、军事、金融等领域,即使增加更多的内存和c p u ,也往往不能解决问题。 2 ) 使用商用的中间件( m i d d l e w a r e ) 关j 二 州件的定义,现在业界还投有统一的认识。比较流行的是i d c ( 互 联刚数掘巾心) 表述p l :中问件是一种独立的系统软件或服务程序,分布式应 j h 软件借助这种软件在不l 司的技术之问共享资源,中问件位于客户机服务器 第幸绪论 的操作系统之i 二,管理计算资源和网络通信。 i d c 对中间件的定义表明,中间件不仪仪实现互连,还要实现应用之间 的川荣作;中叫件足基于分仰j 处理的软件,最突出的特点是其i 叫络通信功 能。 日f i l l - 典型的中问件产品是b e a 公司于1 9 9 5 年推出的t u x e d o 系列产品, 其市场份额高达5 0 以上,而且,t u e x d o 已经发展成为交易中间件领域事实 f 的扔;准。因此,我们就以y u e x d o 作为中间件的代表来进行分析。t u e x d o 提供以f 些主要服务 6 1 :c s 数据流管理( 包括数据压缩、编码、解密等) 、 数捌十口关路山选择、服务和事件的全局命名、服务请求的负载均衡、全局事 务管理以保证交易的完整性、同步异步服务请求、两阶段提交以确保消息的 发送等。 f u x e d o 的主要特点集中在它的网络通信功能一卜。t u x e d o 提供了强大的网 络通信功能,解决了不同硬件平台、不同操作系统、不同网络环境以及不同 数抓库平台之n i j 应用的互连问题并解决了因为应用互连而带来的互操作问 题 i 。 t u x e d o 丰要解决不同应用的业务对象在不同的软硬件平台之m 的可靠快 述通化问题。t u x e d o 并不解决q k 务对象r l i 内存中的组织、管理问题,以及如 f i q 往大量业务对象中找到合适的某个或某些业务对象。而且t u x e d o 对事务的 并发控制足采用默认的锁模式,这样也不利于应用程序员根据具体的应用灵 ;再的选择加锁模式。 3 ) 使用商用的内存数据库系统( m m d b m a i nm e m o r yd a t a b a s e ) j | j r a m 的价格已大人降低,配霄8 g b 甚至更多内存的商h ju n i x 汁 鳟 l 系统l f 醴普通。并| _ l ,现代操作系统均t u 为应川进程运f j 提“l 足够人的 j k 地j i i = h i i j ( 6 41 讧操作系统,1 6 t 地址空问) ,大批量数掘装入史地址审i h j 的限制出,1 :存在了。陶此,4 , 智j l “兆 争儿个g b 的数据库全部装入内仃技 术i 址仃的。m m d b 技术就是忙这一背景下 j 现的p 1 。其菇本思怨足:系 统改时1 i 设整个数掘库全在内存r 1 ,系统优f j l i l , j 重点是如何充分利川内存 f i jc 1 ) u 资源,而1 i 足减少磁盘i o 的垛作。m m d b 的设计充分利川j 犍个 数捌j 个化l 勺打* 米的数捌访问f i v i i i l l ! 的小川特点,在数州的仃储、访m 、 索,j f 等山。i f l l 均采川了充全不同j d r d b 的新技术。数据可以通过指 f - f 接访 ,也i l j 。以通过位筲独:, 7 :f f j 偏移h j 拔巩问,无需像d r d b ) l i l l y :1 缓冲1 ) s e g m e n t h e a d e r s e g m e n t 。如图2 _ 3 所示: 存内存中, 一一个d bf i l e 由 四个p a r t i t i o n 纵 成,每个p a r t i t i o n 由多个s e g m e n t 组成。p a r t i l i o nl 用柬存放d bf i l e 的存储分配信 息,p a r t i t i o n2 幽2 3 业务对象1 三层存储结构 片j 束存放用户数据的r e c o r ds l o t s ( 该结构主要用于方便可变长记录的存储) , p a r t i t i o n3 用来存放f r e el i s t ( 为d bf i l e 的扩大预留空间) ,p a r t i t i o n4 用来存放用 ,、数据。0 i 入p a r t i t i o n 结构主要目的是分离控制数据与用户数据,提高数据访问 的安伞性。- 叮以看到,川户的一张表被映射到了一个单独的p a r t i t i o n 中。 每个s e g m e n t 长度呵变,它山弛享内存中多个连续的页组成,这样虽然存储 结构有些复杂,f h _ r q 以满足大晒l e 务对象被连续存储的需求,增加了灵活性。 1 :l ! 这种存f i 。案r 亿p a r t i t i o nh e a d e r 的个数一定,从t i t i 面 将系统中所有d bf i l e 的头存放在一张表中,以便快速定位某个d bf i l e 的起始位置。 访问d bf i l e 时斗d bf i l e 直接映射到用户进程地址空间。因为s e g m e n t 是一 个连续的虹,所以在访问一个s e g m e n t 巾的多个数据项叫,只需在初次访问时通 过p a r t i t i o n 一 s e g m e n th e a d e r - s e g m e n t 的方式访问数据,以后可直接通过s e g m e n t 进行访m 。返样减少了访问路径。 第一章b o o m 的构架 2 2 4b o o m 中的索引结构 在b o o m 中,业务对象的索引借鉴m m d b 中的索引技术,采用t 树索引结 构。t 树索引之所以在内存中使用是因为它不仅可以减少树的层次,提高查找目 标的敛率,而且可以减少索引在内存中所l 与用的空间,提高了时恻和空恻上的利 用效率。 侄b o o m 中提出了对经典t 树的改进方案一t t a i l 树,它减少了经典t 树中 f 衡旋转的次数,从而提高了在t 树上的索引性能,尤其是并发访问t 树f t j 的性 能。另外,时t 树中的索引项进行了修改,使之可以支持包含可变长关键字、多 属性关键字。在b o o m 中设计了一种t 树并发控制协议,该协议以最新的l o g i c a l v e r s i o n 和o h y s i c a lv e r s i o n 技术为基础的。具有如下特点: i ) 只读事务不需要获得任何锁; 2 ) 更新事务在定位要被更新的结点时,对t 树的遍历不需要获得锁,只有当 更新事务真正执行更新操作时,爿需要获得锁; 3 ) 只修改t 树中一个结点的更新事务可以并发的执行; 4 ) 心插入操作而导致的平衡旋转操作可以并发的执行:该方法实现只读事务 d , ) j il 锁f l j 访问t 树,提高t 树的访问效率,从而提高系统的性能。 g r e a t e s tl o v a e - 3 0 u t e do f al e a s tu p p e rb o u n do f a 业务对象管理中恢复机制的研究 2 2 5b o o m 中的并发控制1 1 2 在b ( 】o m 中,山于业务对象放在内存中,事务处理的效率很高,因此在实现 并发控制上和传统数据库有不同之处。事务的并发控制可以有多种方法,主要有 加锁挑议、基于时问戳的协泌以及基于有效性验证的协议。在b o o m 实现中采 用了加锁协议。下面介绍锁机制的没计和管理。 1 锁机制的设计 b o o m 中锁和被加锁对象均在内存中,而d r b d 中锁加在磁盘上,因此b o o m 事务处理比d r d b 快得多。在锁机制设计时充分考虑了这些特点,并设计了以下 几类锁。 1 ) 用户级自旋锁 应用服务器中存在大量的短事务或操作,使得对某一类共享业务对象竞争的 几率明显降低,此时采用操作系统提供的信号量实现锁是不可接受的,为此设计 了采用硬件原子机器指令实现用户级的自旋锁。它主要用于支持竞争低、处理时 间短的共享业务对象的互斥访问,代价仪是数条机器指令。 2 ) 读写锁 满足事务问对共享业务对象多读一写的访问需求。设计实现了基本读写锁和 多粒度锁,它们都是基于p o s i x 用户级线程库的同步机制实现的,其开销也小于 操作系统提供的信号量机制。 2 锁的管理机制 锁管理机制( 加锁、解锁、事务加锁信息的管理) 对系统性能影响很大,针 对应用服务器中锁与被加锁对象全在内存的特点,我们采用事务自治的锁管理机 制,锁的管理操作由各事务直接操作共享内存完成,避免了d r d b 中由单独的锁 管理器束完成全部的锁管理操作而引起的瓶颈问题,这种机制具有如下优点: 1 1 消除了进程问通信的开销 2 ) 消除了集中锁管理器进程的瓶颈问题,提高了潜在的并发性。 ”消晗了划晰辨椰巳否m 铀时杏辅嘉的丌销 2 2 6b o o m 中的事务恢复机制 在b o o mm 1 ,事务恢复机制占有重要的位置。由于b o o m 在内存中管理了 大量的业务对象,保证了基于b o o m 的应用服务器具有高效快速的事务处理能 力。但是,也1 f 是因为在内存中,给事务的恢复带来了困难。在事务的执行上, 旃一审b o o md 勺构挺 要保证! 扣务的a c i d 特性,即事务的原f 性( a t o m i c i t y ) 、一致性( c o n s i s t e n c y ) 、独 立性( 1 s o l a t i o n ) f 1 持久性( d u r a b i l i t y ) 。而内存中数掘是容易丢失的,这就造成了内 存一 r 牡务赴傈证持久性上的存在一定的难度。因此,建立囊高效可靠( 【勺恢复机 划是b o o m 。 一事务正确执行的有力保障。 b o o m 的事务恢复使用h 志作为为主要的恢复手段。共享内存中存放的所有 业务对象,不管是用,、数据还是元数掘。对它们的操作都反映在恢复机制的h 志 汜求。- 。”系统发生了故障,事务恢复机制根掘i 己录的r 志消除对内存巾数据 的史改,把数掘的状态恢复到事务执行自n 的有效状念。 【恢复机制并发控制存储管理敬据库管理系统监控 l共事内存 l 图2 6b o o m 中的恢复机制 从图2 6t 可以看出,恢复机制、并发控制和存储管理建立在共享内存的使 用之l 二。恢复机制和并发控制、存储分配的关系密切。它们和索引查找是b o o m 的藿要组成部分。b o o m 的恢复机制在代码级上为用户提供开发支持,用户可以 根捌应j j 领域的特点,灵活配管柑应的恢复策略。 以一卜简t p 叙述了b o o mq j l l 0 恢复机制,l j 于b o o m 中恢复机制的研究是本 文n 01 受i 作曛点,f 埘此下面几章将i t 卸l 州述、 k 务对蒙恢复机制的设汁策略和方 法,并给 其在r 乜信计费系统中的应h j 。 业务对象管理中恢复机制的列 究 第三章内存事务的恢复技术 在b o o m 中业务对象放在是共享内存中的,内存是易丢失信息的存储介质。 因此,保证事务的可靠安全对应用来说是非常关键的。本章阐述b 0 0 m 事务恢 复工怍所用到的相关技术和概念。 3 1 内存中事务恢复的特点 计算机内存有明显的不同于磁盘的特征,主要表现在下面几个方面: 1 从内存中存取数据的时间要比磁盘上的存取时间少得多。 2 内存是易丢失数据的介质,而磁盘不是。虽然可以使用不丢失数据的内 存,但是会增加花费开销。 3 磁盘的最小存取单位是块,在磁盘上每次存取的固定开销较大:而内存 是按字节存取的设备,存储开销和存取的数据量几乎是线性相关。 4 在磁盘上数据的存放位置和组织对存取效率有很大影响,顺序存取比随 机存取要快得多。而内存中顺序存取和随机存取的两种方式效率是一样 的。 5 内存直接被处理器存取,而磁盘则不然。这样内存中数据的出错比磁盘 上的出错更为致命。 因此在事务恢复上要采取一定的措施来保证事务持久性。我们从下面几个方 面柬看内存中事务恢复的特点。内存中数据恢复的结构如图3 1 所示。 3 1 1 事务提交处理的特点 1 - 使用事务预提交 在内存中事务处理的效率非常高,执行的事务都是短事务。但是为了保证事 务的持久性,每个事务在提交之前得等待同志写到磁盘上,写日志影响了事务的 响应时阃,电就影响到系统的性能。如果日志成为系统的瓶颈,这会违反把数据 放入内存提高效率的初衷。在内存事务中,使用事务的预提交来解决内存事务日 志的提交问题。事务预提交是指事务在内存中把同志记录放置好后,释放所持有 的数据上的锁,就完成了预提交。事务的预提交不用等待日志写到磁盘上,r j 志 临时保存在内存中。日志通过另外一个过程( 称为日志刷出) 把内存中的日志刷 出到磁盘上以完成事务真正的提交。 2 使用事务的群提交 第二学内存事务的恢复技术 此外,町以h j 群提交( g r o u pc o m m i t ) 的技术来缓解f _ | 志的瓶颈问题。群提 交时,事务预提交后的日志记录也不用立即送到磁盘上,几个事务的闩志记录允 订:在内存t l ,平j 累。当秋累到一定程度,爿刷出到磁盘上来。群提交减少了磁盘操 作的次数,它川一条磁盘操作完成了多个事务的提交。 3 系统对日志的要求 为了使 1 志不成为系统的瓶颈,内存事务尽量使用逻辑闩志,减少对物理只 忐的他川。p 、i 为逻辑h 志描述了系统采用的操作,使用逻辑 j 志产生的f - f 志罱比 物删! f 1 志产! l :的f 1 志量要少得多。 c h e c k p o i n t s 日志 蚓3 川0 仔数据恢复结 _ j ! j 3 1 2 内存数据的检查点( c h e c k p o i n t ) 为了圻i 二系统的内存故障如内存掉f 乜m o j 起数据丢失,在磁船l 胃h i 份数 鼠,;的箭份并j i 保留1 f g - 动事务的忐信息。在磁盘上备份的内存数据保证了在 系统j 们溃n 内仃数_ i 】i j i l j 以从磁盘一1 恢复州术。为了能够恢复必须要有两个煎要的 步骤,n 儿,陀证常g 睁 运行时,把内存- - 数据的更新及时反映到磁盘卜的备份 - 眩j i 玖化发q 二r 1 蒯雌时把数扒从箭份l i 愀复回束。日一个过f t l 我们称为 c h c c k p o i n t ,历一个过利称为恢复或战障怏复。( 泣意,在本文中c h e c k p o i n t 一词 的含义是指磁盥上的数据备份,或者是把内存中数据备份到磁盘上的动韵;或过程, 具体根扒j :卜义来确定。) 亿j 、i 川h 除非、训何r l 二的额外要求,如从磁恤上获取,j 外的文f 。、j 息, 般胁扰l 、l 仃c h e c k p o i n t 、恢复、i 【。芯删足l 互接与磁盘交j r ,j 越j w 序1 i 直- ,触鼎交忆。j :磁盛足块设搿,它的i 0 鞋通常是大块的数_ i l l :,此人块 业务对象管堙中恢复帆捌的埘f 宄 数据读写磁盘会很高效。尽管磁盘i o 的时间开销比较大,但只有c h e c k p o i n t 进 程需要等待磁盘写操作的完成,应用事务进程并不需要等待。 1 c h e c k p o i n t 方法 应川的最终目的是为了事务处理能够高效,因此c h e c k p o i n t 过程对正常事务 的l 二扰应尽可能的少。从c h e c k p o i n t 数据一致性的角度上分,常用的c h e c k f o i n t 方法有两利,模糊检查点( f u z z yc h e c k p o i n t ) 和非模糊检查点( n o n f u z z y c h e c k p o i n t ) :另外,还有在磁盘上存放两份内存数据的c h e c k p o i n t 方法,称为乒 乓检查点( p i n g p o n gc h e c k p o i n t ) ,这三种方法分别介绍如下: 1 ) 非模糊检查点( n o n f u z z y - c h e c k p o i n t ) 方式 采用n o n - f u z z yc h e c k p o i n t 方式,在c h e c k p o i n t 内存中的数据时,要求事务保 持一致或事务的动作保持一致。这样,执行c h e c k p o i n t 时,往往要对数据页加 锁,因而增加了锁的竞争,对i e 常事务的干扰很大。保持一致性的c h e c k p o i m 虽然可以简化同志的记录,只记录逻辑日志而不用记录物理日志,但影响事 务处理的性能。幽3 2 描述了可进行c h e c k p o i n t 的点。 t 图3 2 非模糊检查点的c h e c k p o i n t 点 2 ) 模糊检查点( f u z z yc h e c k p o i n 0 方式 采用f u z z yc h e c k p o i n t 方式,它不需要保持事务数据的一致性而把内存中的数 据写到磁盘上。在任何时问点都可以进行c h e c k p o i n t ,而不用考虑事务或动作的状 态是否一致。如图3 3 所示: 图3 3 模糊检查点的c h e c k p o i n t 点 第二辛内存事务的恢复技术 3 1 乒l 己枪a 点( p i n g - p o n gc h e c k p o i n t ) p i n g p o n gc h e c k p o i n t 在磁盛上使丌j 曲份拷贝, 。次c h e c k p o i n t 过程覆盖其i 的 一份拷儿,卜一次c h e c k p o i n t 再覆盖另一份拷贝,这样在c h e c k p o i n t 过程中如果 发,j i 了系统崩溃,虽然在本次拷贝上造成了数据的不一致性,但是可以使用上一 次的拷贝和同志把数据恢复回来。 2 口志和c h e c k p o i n t 的关系 ti 忐和c h e c k p o i n t 的目的都是为了事务的恢复,而主要的恢复手段还是丁志, 使i l f jc h e c k p o i n t 的日的是为了减轻使用同志恢复的负担,它辅助使用n 志进行恢 复。 次c h e c k p o i n t 完成之后就可以不再使用c h e c k p o i n t 之前的f f 志来恢复数据 了,数捌的恢复可以从新完成的c h e c k p o i n t 丌始。 3 1 3 分层事务模型 内存耵务l i 普遍使用分层事务模型( m u l t i l e v e lt r a n s a c t i o nm o d e l ) ,也称为多 层事务模型l i ,以尽量使用逻辑几志,减少使用物理r 志。在这一节,概括说 明卜| 习f 务分层模型的特点。在本文中所提到的事务的分层模型不是事务的嵌套 模,纵它是嵌套模型的一种特例。 i 事务分层的概念 】 务m 一系列的操作组成,在层l if :的一项操作由l i 一1 层的一系列操作 l n l i l l t 、入 rwrwrww h3 4 分j 。川l 务模) 弘 纰成。m i 定。j i 务扯l 、j 矗那么它响川l n - l 的操作。存l o 层上的操作足刈化i 仃 r t i 的数州j 。l 1 、儿桑的物州史新。j 务j 以反映为棵目务树,如劁3 4 所_ j 。打 务树小所仃| _ i 9 i l ir - 竹点处于。j 。;卜,事务恻r q 边表示通过一系列的l jj 一一 业务对象管理中恢复机制的研究 操作来实现一个操作。一个n 层的事务层次可以用l o ,l l l n 从下到上的表示。 在+ 】) 层上的操作调用l i 层上的一系列操作。 2 分层事务的恢复方法 分层事务取消的实现呵以有两种方式: 1 ) 基于状态的u n d o ,它把事务写集合中的对象恢复到事务开始时的状态。 2 ) 调用补偿操作。 事务取消实际上相当于一系列的写操作,只是写的顺序和事务原来写操作的 顺序相反。方式2 1 中,补偿操作只是被取消事务的额外操作,取消过程执行补偿 操作的顺序和原事务操作的顺序相反。 3 分层事务的并发性 我们使用事务的分层模型,除了能够使用逻辑f l 志外,对于单层事务模型来 说,还可以获得更多的并发性。多层事务并发性的获得二j 三要是因为它在层次上定 义的操作具有并发性。在某一抽象层次上两个同样的操作如果是可以并发执行 的,那么在操作的语义上并不存在冲突。 4 分层事务的可串行化 目前在经典的串行化理论当中,使用两阶段锁能保证事务可串行化,而且是 避免事务级联回滚的有效方法。在事务的每个层次上使用两阶段加锁可以保证多 个事务在某个层次上事务操作能串行化,但是不能保证整体上多个事务是可串行 化。因此在采用两阶段锁的并发控制的分层事务在l l 层上的操作是可串行化的。 3 2 前人的工作与不足 下面将回顾日口人在内存事务恢复上所采用的方法和不足之处。 在 1 5 】 1 6 】 1 7 】中提出了大量内存环境中恢复算法,这些方法都在力图减少往 磁盘j :刷 f 5 的r f 志量。它们都是出于这样一种情况的考虑:在内存数据库中,事 务i i :常处理日、 ,脏页不会如同磁盘数据库那样刷新到磁盘上,脏页暂时保瞬在内 存中,活动事务的f :i 志也驻留在内存叶l 。例如,在【1 5 和 1 7 】中恢复方法使用 p i n g p o n gc h e c k p o i n t ,这种方法不仅4 i 需要遵守提前写i 二1 志规则( w r i t e a h e a d l o g g i n g ) 而l 1 还减少了h 志刷出到磁盘上的次数。在【1 5 】中,每一个活动事务的r e d o 和u n d o 几志在内存中分丌存放,因此减少了对系统h 志( s y s t e ml o g ) 的竞争。同 时当j f 务提交时,只有r e d o | 1 志写到s y s t e ml o g 中,这种技术称为t r a n s i e n tu t l d o l o g g i n g ,它彳i 需要在j f 常雩务处理时把u n d oh 忐写到磁盘上。但是在c h e c k p o i n t 过程叫i 需要把二扛务各自的u n d o 同志写到磁盘上。 杠:f 15 f f j 恢复方法中采用了t r a n s i e n tu n d ol o g g i n g 和p i n g p o n gc h e c k p o i n t 技术 第二章内俘$ 务的愀复披术 行分别维护了j 拉务的h 志,然而它们的方浊1 i 能重复历史,而l i 在段级( s e g m e n t l e v c l ) f :,进仃c h e c k p o i n t 时保持了动作的一致性,导致了对活动事务的二卜扰。 f m 山所提剑的方法存在的不足魁:要么没仃提供逻辑只志的支持,要么采用 动 1 致性( a c t i o nc o n s i s t e n c y ) 的c h e c k p o i n t 方法,增加了对事务处理的 :扰。 ,i : 18 的。陕复方法中,采用了p i n g p o n gc h e c k p o i n t 和f u z z yc h e c k p o i n t 相结合 的力浊,提高了系统的性能,而r 使用了p o s t c o m m i tr 志,使事务在提交后可 以执 j :那些f :能用退的操作。但足往 1 8 f 1 ,不论在c h e c k p o i n t 过程巾还是非 c h e c k p o i n t 过程 1 ,都使用了物理i :1 志,增加了写磁盘的r 志量。 木章肘内存中业务对象的事务恢复特点和采用的技术作了阐述,并对前人所 做的i :作进仃了评述。针对其不足本文提出了下章所述的对活动事务的t 扰少而 f 1 磁艋i 0 丌销也小的恢复方法。 业务对象管理中性复机制的研究 第四章b o o m 中事务的恢复 j i :放式b o o m 住内存中管理了大量的业务对象,使得使用b o o m 构架的应 用服务器系统具仃高效的事务处理能力 部分在没f 上也应该以这个e 的为中心 4 1 1 设计目标 内存中事务的恢复作为事务组成的重要 由此提出了事务恢复设计上的目标。 4 1b o o m 的事务恢复总设计 1 快速高效 为了提高事务的处理效率,c h e c k p o i n t 进程应尽量减少对正常事务处理进程 的干扰以达到实时性的要求。c h e c k p o i n t 进程和f 常事务间进程的相互干扰主 要发生在资源的共享冲突上,在内存环境中表现为对内存中业务对象数据的访问 冲突。虽然干扰是双方面的,但我们不能对正常事务提出限制和要求,因为这会 影响到事务处理高性能的目标。因此,必须对c h e c k p o i n t 提出限制。 2 低开销 减少内存到磁盘的r 志输出量。为了使得事务能够恢复,在事务处理过程中 产q i 了记录其历史的同志。这螳几志必须持久化才能实现恢复的功能,这就需要 把事务的r l 志存放到磁盘上,而磁盘的读写会影响事务处理的提交,但为了使系 统能够从崩溃中恢复回来,就必须有足够的信息存放在磁盘上。因此在满足能够 恢复的前提下,尽量减少磁盘的i o 数据量是b o o m 的设计重要目标之一。 但是为了实现这两个目标,采用的方法在原则上是相互矛盾的从达到快 速高效的要求出发,在c h e c k p o i n t 的方法中应采用f u z z yc h e c k p o i n t 。而f u z z y c h e c k p o i n t 带来的结果是c h e c k p o i n t 完成后,磁盘上的数据没有处于事务一致性 状态,因此采用f u z z yc h e c k p o i n t 时,相应的恢复方法只能是使用物理日志对数据 进行f :9 ( 复;可是为了达到低丌销的要求,却要减少物理r 志的使用,尽量多使用 逻辑n 志。因此在事务模型中采用分层的事务模型,在每个层次上使用逻辑同志 来代替物理h 志。 以下作者提出采用次底层逻辑h 志和物理r 志相结合的解决方案,探索新的 途径来解决这个矛盾的。 第p q 帝b o o m 中的事务饿复 4 1 2 事务恢复的总方案 奉文提的策略是:在f u z z yc h e c k p o i n t 进程进行内存数据的c h e c k p o i n t 州使 川事务的物型hf 1 志:在f 常事务处理阶段,不进行c h e c k p o i n t 时使用次底层的逻 辑h 忠代替物理i 二 志。找到事务能够恢复而且使用物理同志的时间段的最小范 阳,减少存放在磁盘上的闩志量。 4 i 3 事务恢复的构架 图4 】是b o o m 的恢复构架。图中涉及了脏页表、数据区、活动事务表等概 念。这些部幅f 数据库中的数掘结构,下面说明它们的含义和作用。 匹 哐五i 二 1 0 一 【上鱼缸山删 jj c k p l ac k p t b 斟4 ib o o m 的恢复构絮 e n do f s t a b l el o g d a t a a c t i v ei r a t s t a b l e ( u n d o l o g ,p o s t c o m m i t l o g ) 1 共享内存数据区数据区( d a t ar e g i o n ) 为业务对象所存放的位胃,它是 块) q 内存,从物理上划分为等长的页面。 脏贝表( d i r t yp a g e ) 如果业务对象被更新,那么州应的业务对象所在的页标 肌“。j l l 页表中记录该页是否为脏。 3 活动事务表a t t ( a c t i v et r a n s a c t i o nt a b l e ) 在活动事务表a 1 1 t 【f f 记载了 亨 业务对象管理中复机:划的训 究 当前证在并发执行的活动事务,每个活动事务占用了表中的一项,每一项为事务 记录的入口。事务的u n d oh 志,r e d oh 志和p o s t - c o m m i tf 1 志分别存放。每一类 f | 志仃放为条h 忐链。活动事务表的每一个入口中除了含有事务的i d 和事务 信息的状态外,义含有指向各条r 志链的入口。具体如图4 2 所示。 4 系统目志( s y s t e ml o g ) 此外,在内存q ,还含有一条记录有系统历史闩志的 链& ( s y s t e ml o g ) ,它存放事务或操作提交后从a t t 表柬的几志。这条链表r j 的f 志顺序也就是整个系统执行的先后顺序。s y s t e ml o g 中的阴影表示刷出到磁盘卜 的f l 志部分,使j 1 j 变量e n do fs t a b l el o g 标识s y s t e ml o g 中,已经被持久化了( 刷 h 到磁盘) 的| 1 志的位置。 5 c h e c k p o i n t 数据区 在磁盘上有两份数据区的数据c k p t a 和c k p t b ,采用p i n g p o n gc h e c k p o i n t 方法:每一次c h e c k p o i n t 将刷新份,f 一次c h e c k p o i n t 将刷新另外一份,两份 轮流交竹刷新。山磁盘上的标识c u rc k p t 记录最新数据区在哪一份l 。 a 丁te n t r y 图4 2 酒动事务表a t t ( a c t i v et r a n s a c t i o nt a b l e l 3 打务在i 川? 处耻时产_ ,i 三了 _ 志,事务完成后把h 志写刮磁盘上,完成事务的 提交。“f 务拒执行期n j i i 发生了敝障,它根抓所产生的| _ i 志把事务回退到事务: 始i i , jf ,j 状态,j t 成事务取消。内存环境u i ,c h e c k p o i n t 过程把事务弄脏的数据写 到到州1 ,隹的磁翎卜,完成数掘的持久化。在系统崩溃之后,恢复过程根据f f 志把 系统陕复剑目f 务致性的状态。 h 川刊述b o o m 在这四个方硒所采川的策略。 第u u 辛b o o m 中的事务限复 4 1 4 策略的总体介绍 1 提交的策略 存b o o m 所设计的提交策略中,事务分两次提交:当事务的一个操作完成后, 它把a t r 衷l ”r e d ol o g 的同志移到s y s t e ml o g 中;当事务完成后,再把s y s t e ml o g t ,的忠刷到磁盘h 使得门志持久化,满足了事务的持久化特性。 2 仃父c h e c k p o i n t 的策略 为了满足事务处理高效的要求,使用f u z z yc h e c k p o i n t 和p i n g p o n gc h e c k p o i n t 十h - 2 i ! j 台,f u z z yc h e c k p o i n t 减少了c h e c k p o i n t 进程对事务进程的干扰。c h e c k p o i n t 进程先记录卜s y s t e ml o g 中已经持久化了的f 1 志位置,即e n do fs t a b l el o g ,再 把内存t 1 、的脏数扼区写到磁盘上,然后把a t t 表中事务的r 志写到磁盘上,最后 把s 3 r s t e ml o g j 由q h 志写到磁盘上。 3 i 天事务的取消策略 仪抛目 务在u n d of i 志链中的r 志取消事务剥原来数据产生的影l 响。 4 7 f 关事务的恢复策略 、1 1 系统发7 l i 了致命的故障后,系统重新肩动,使用磁盘上s y s t e ml o g 中的r e d o i 卜占畦做历史,把系统的状态带向崩溃点,再使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论