您好,欢迎访问三七文档
16.1分布式数据库可靠性的概念----数据库可靠性是指数据库在一个给定的时间间隔内不产生任何失败的概率.它强调数据库的正确性,要求数据库正确地运行,即符合某种规格化要求.----数据库可用性强调的是当需要访问数据库时,它是可用的,指的是在给定的时间t,数据库按照说明能正常运行的概率.即使在时间t之前有许多故障发生,但是如果它们在时间t都已经被修复了,系统在时间t仍是可用的.----在有些场合下,可靠性和可用性这两个方面是统一的,一般来说,可靠性高的系统其可用性也好.但在另一些场合下,可靠性和可用性这两方面又是矛盾的.例如,我们可以在增加获得错误结果的风险下,允许系统继续工作来提高其可用性,或者,采用太谨慎的策略来降低可用性.CH6.分布式数据库中的可靠性2例6.1考虑数据项X在两个站点1和2上的副本X1和X2.事务T要执行如下操作:锁定X1和X2,预备更新,执行两阶段提交.假定采用2PL协议来保证事务执行的可串行性,采用2PC协议保证事务的原子性,T假设站点1是T的原发站点,并且是2PC协调者.现在,假定两个站点都决定提交以后,通信网络发生故障.但是,这个故障发生在从协调者站点1发送提交命令给站点2以前.此时,站点1可以提交该事务,但是,站点2该怎么做?可采用两种可能的策略:----把正确性作为绝对的要求,它使X2保持在锁定状态直到故障修复为止;当重新建立通信时,该事务将正确地结束.这种方法牺牲了可用性,因为X2不能给在站点2的其他事务使用.//2PC协议.----在可能出现不一致性的风险下提高其可用性,它使X2解锁,让其他事务使用其值.此时,如果假定提交比撤消更常发生,则在解锁以前进行提交.CH6.分布式数据库中的可靠性36.1.1平均故障间隔时间和平均修复时间----平均故障间隔时间(MTBF):在可以自我修复的系统中相继失败之间的期望时间.见Page174.----平均修复时间(MTTR):修复一个失败的系统所需要的期望时间.6.2分布式数据库系统的故障原因和容错技术6.2.1分布式数据库系统中系统失败的原因1.软故障和硬故障软故障:间歇性和瞬变性故障硬故障:永久性故障2.软件和硬件故障3.软件故障的主要原因----bugCH6.分布式数据库中的可靠性46.2.2基本的容错方法和技术1.容错和错误预防:创建可靠的系统的两种基本方法.容错:指设计出一种使系统识别出可能会发生的错误的方法.它试图在系统中建立一种机制,使错误在造成系统故障之前就会被检测出来,并且被清除或得到补偿.错误预防:保证所实现的系统不包含任何错误.它有两个方面的含义:第一是错误回避,指那些保证系统中不会带入错误的技术,如设计方法学,质量控制;第二是错误清除,用于清查那些在使用了错误回避技术后,还残留在系统中的错误并且清除它们.2.故障检测:创建可靠系统的第三种方法.3.冗余:所有的容错系统的设计中都采用的基本原则是在系统的组件中提供冗余.容余组件可以使发生错误的作用得到及时补偿.4.故障-停止模块和进程对5.面向会话的通信CH6.分布式数据库中的可靠性56.3分布式数据库的可靠性协议1.分布式命令的分布式执行过程分布式数据库可靠性协议是为了保证在分布式数据库上执行的分布式事务的原子性和持久性.这些协议描述了begin-transaction,read,write,abort,commit和recover原语的执行过程.见Page179.2.分布式可靠性协议的组成:包括提交协议、终结协议和恢复协议.终结协议是分布式系统特有的.设想在执行一个分布式事务时,其中一个站点失效,我们希望其他站点也停止该事务.处理这种情况的技术就称为终结协议.终结协议和恢复协议是恢复问题的两个相反的方面:假定一个站点失效了,终结协议确定了未失效站点如何处理该失效事件;而恢复协议确定失效站点重新启动后,其进程恢复它的状态的过程.在网络分割的情况下,终结协议采取必要的措施来终结在不同的网络区间执行的活动事务;在网络重新连接后,恢复协议保证使各个冗余数据库相互一致.CH6.分布式数据库中的可靠性66.3.2两阶段提交协议的演变1.关于两阶段提交协议两阶段提交协议的一些重要之处:(1)两阶段提交协议允许参与者可以单方面撤消事务,直至它做出肯定性的提议;(2)一旦参与者确定了提交或撤消提议,它就不能再更改它的提议;(3)当参与者处于就绪状态时,根据协调者发出的消息的种类,它可以转换为提交状态或撤消状态;(4)协调者依据全局提交规则做出全局终结决定;(5)注意协调者和参与者可能进入某些相互等待对方发送消息的状态.为了确保它们能够从这些状态中退出并终结,要使用定时器.每个进程进入一个状态时都要设置定时器以便进行超时处理.CH6.分布式数据库中的可靠性72.假定撤消2PC协议和假定提交2PC协议•改进两阶段提交协议的两种方法:一种是减少协调者和参与者之间传递的信息的数量(即假定撤消2PC协议);另一种是减少日志写入的次数(假定提交2PC协议).•这两种协议的基本思想是:只要当一个已就绪的参与者向协调者询问事务的结果时,如果在协调者的日志中找不到该事务的任何信息,就认为该事务“被撤消”或“已经提交”.(1)当使用假定撤消2PC协议时,可以看出协调者在决定撤消后,可以立即忘记该事务它可以写入撤消记录,且不用等待参与者确认撤消命令.写入撤消记录后,协调者无需写入事务结束记录.(2)当使用假定提交2PC协议时,协调者在发送准备消息之前,首先收集所有参与者的名字,然后发送准备消息并进入等待状态.参与者收到准备消息后,以“建议撤消”或”建议提交”的消息响应.当协调者收到所有参与者的决定后,就可以作出撤消或提交决定.如果决定撤消,协调者写入撤消记录,发送“全局撤消”命令,直到协调者收到参与者的撤消确认.如果它决定提交该事务,就写入提交记录,发送“全局提交”命令,然后忘记该事务.此时不需要等待参与者确认,也不写结束记录.//原2PC协议中,需要进入第二阶段.CH6.分布式数据库中的可靠性86.3.3事务阻断与终结协议1.事务阻断和阻断协议事务阻断是指某个站点上本来可以终结(提交或撤消)的子事务,由于分布式数据库系统的故障,它必须等到有故障的子事务修复后,取得必要的信息才能决定.而故障的恢复又不可预料,所以它占有的资源也不能释放,也没法继续执行,此时称该事务处于事务阻断状态.提交协议称为阻断协议是指发生类型故障时,使分布式事务可能处于阻断状态.2PC协议是阻断协议.2.终结协议终结协议:允许一事务在有故障情况下仍能正确地结束.用途:当正常的提交过程被故障中断时,可以调用终结协议,使无故障的站点正确地终结该事务.下面以2PC为例,说明终结协议的使用:CH6.分布式数据库中的可靠性92.终结协议(续)假定在2PC协议中,站点发生故障,但不是网络分割.对于这一假定,可以设计一个终结协议,它允许在协调者站点发生故障时,事务可在所有可工作的站点(未发生故障)终结.但只对如下两种情况:(1)至少有一个站点已收到结果命令.此时,可由该站点告诉其他参与者关于该事务的结果,并由它们来终结该事务.(2)没有一个参与者曾收到过结果命令,并且只有协调者站点出故障.此时所有参与者站点都是可工作的.参与者可以选举一个新的协调者,然后继续.但是,当没有一个可工作的参与者曾收到此命令,并且至少有一个参与者出故障时,终结就不可能,因为可工作的参与者无法知道出故障的参与者已干过什么,仍无法独立做出决定.2PC协议中超时处理见Page182-183.CH6.分布式数据库中的可靠性106.3.52PC协议的恢复协议假定(1)在日志中写入一条记录和发送一条消息组合在一起,成为原子性操作;(2)状态转换发生在响应消息发送之后.比如,如果协调者正处于等待状态,这意味着它已经成功地在它的日志中写入开始提交记录,也成功地发送了“准备”消息,但这并不是说它成功地完成了消息传送.那么,2PC协议关于站点失效的讨论见Page186-187.6.3.63PC协议及其终结协议见Page187-190.CH6.分布式数据库中的可靠性116.4网络分割与提交协议1.什么是网络分割?2.非冗余数据库和冗余数据库----在非冗余数据库情况下,网络分割由提交协议(终结和恢复协议)来处理;----在冗余数据库情况下,网络分割由复制控制协议处理.3.网络分割的处理策略和准则----要么允许所有站点继续执行它们的正常操作,并允许数据库一致性受到威胁;----要么采取措施保证数据库的一致性,即只允许一个区域的站点执行操作,阻断其他区域上的站点.CH6.分布式数据库中的可靠性126.5不一致性的检测和解决方法----处理故障的策略有可能牺牲正确性来提高可用性,因此接受了不一致的风险,在这种情况下检测这些不一致性,并尽可能地加以解决是很有用的.----不一致性的检测方法可以采用版本号假设为每个数据项决定出允许对其进行操作的一组站点,该数据项存放在此组站点中的副本选作主副本,其他的副本则为孤立或隔离的副本.每个副本维持一个原版号和一个当前版本号.初始时此原版本号为0,而当前版本号被置为1.每当对此副本执行一次更新时,只是当前版本加1.当发生网络分割时,每个孤立副本的原版本号被置为其当前版本号之值.这样,原版本号记录了对此副本进行任何“分割更新”以前的孤立副本的当前版本号之值.直到该分割修复为止,此原版本号不会改变.这时比较所有副本的当前版本号与原版本号就能暴露出不一致性.CH6.分布式数据库中的可靠性136.6多副本恢复算法•引入冗余的目的:----提高读操作的局部性,减少通信开销.----提高系统的可用性及可靠性.•例:假设一个DDB有三个场地及三个数据项X,Y,Z,它们的分布如下://P204(1)数据的分布情况:场地1场地2场地3XX1X2YY1Y3ZZ2Z3出现网络分割故障的全部可能方式为:分割情况:组1组2组3A12,3B21,3C31,2D123CH6.分布式数据库中的可靠性14有12个事务涉及X,Y,Z操作,其中9个是更新事务,3个是只读事务,如下所示:事务读出集写入集1XYZXYZ2XYXYZ3XXYZ4XYZXY5XYXY6XXY7XYZX8XYX9XX10XYZ--11XY--12X--下面分析网络分割时的系统对这几个事务的可用性.CH6.分布式数据库中的可靠性151.采用读一写全方法下系统的可用性----由于写锁要求对所有的副本加锁,所以对于任何网络分割情况,事务1-9不可能申请到全部的锁,因此它们不能执行,而事务10-12是只读事务,它们只锁定一个副本,所以它们可在出现网络分割时在各自的组内执行(如果存在这样的组).下图表示事务可以执行的分割后的组.事务123456789101112A------------------2(1,2)(1,2)B------------------22(1,2)C------------222222D--------------------1(1,2)在这种方法中读副本不考虑数据的一致性,因此可以只锁定一个副本,且从中读出数据.//实际上,副本数据的一致性是由写锁全部副本保证的,当无故障时更新操作没问题,当有故障时有的副本将无法加锁,则无法更新,所以副本的一致性得以保证.CH6.分布式数据库中的可靠性162.采用多数方法下系统的可用性----考虑一种加权的多数法或法定的人数法,每个数据项赋予投票数V(x)的总数,并给数据项X的每一个副本赋予一个投票的V(xi)使得V(xi)之和等于V(x),于是读法定人数Vr(x)(即若干个副本的投票数之和)和写法定人数Vw(x)(若干个副本的投票之和)满足:Vr(x)+Vw(x)V(x)Vw(x)V(x)/2一个事务可以读(写)x的条件是:当它对如此多的副本进行了加锁以致于这些副本投票数之和=Vr(x)(Vw(x)).假定V(x)=V(y)=V(z)=3,V(x1)=V(y1)=V(z2)=2,V(x2)=V(y3)=V(z3)=1,则在网络分割情况下系统的可用性如下图:事务123
本文标题:分布式数据库系统5
链接地址:https://www.777doc.com/doc-3128964 .html