找论文网 > 计算机论文 > 计算机理论 >

一种改进3PC协议在分布式数据库安全中的研究(2)

2.2 改进协议的思想描述
    改进算法以传统3PC协议为基础,同时增加了冗余的协调者,但是对于参与者来说,冗余的协调者并不可见。正常情况下:当改进算法开始时,存在一个主协调者,该协调者负责协调参与者,其功能和传统的3PC协议中的协调者相同;同时,系统中存在一个从协调者队列,该协调者队列作为主协调者的后备,监听发送给主协调者的信息(因此从协调者也可以称作监听协调者),并执行与主协调者同样的动作,但是,该协调者并不向参与者发送各种命令,亦即,从协调者除了不发命令到参与者,其他动作同主协调者相同。因此,在任意时刻,从协调者和主协调者的状态完全一致。对于参与者来说,它们并不能感知主、从协调者,永远相信协调者不会死亡。从协调者通过在特定短时间间隔内和主协调者通信来感知主协调者是否存活,这个时间间隔应该远远小于传统3PC协议中的超时。从协调者从主协调者处得到回执消息,从而知道主协调者的存活。如果从协调者间隔一定时间(比如3秒钟)没有收到主协调者的消息,则认为主协调者失败。[5]
    当从协调者发现主协调者失败时,提升自己为主协调者,并接管已经失败的主协调者的工作,向参与者发送命令。该接管过程是无缝的。
    对于参与者来说,它并不需要关心当前的协调者是原来的主协调者,还是主协调者失败后由从协调者提升而来的。也就是说,主协调者的更替对其来说是透明的,它可以把所有的协调者看成一个整体,参与者只需永远信任协调者不会失败。
图2.1 改进3PC协议系统结构图
    图2.1为引入从协调者后的系统结构图,其中,虚线表示监听协调者对于参与者来说是透明的,在图中,监听协调者1作为协调者的冗余,监听协调者对列为协调者的冗余队列,队列中冗余副本按照站点标记作为优先级存入队列,当协调者死亡后,由监听协调者1替代协调者角色,当监听协调者1也死亡时,监听协调者队列再输出新的协调者,负责主协调者的工作。
    改进3PC协议中事务执行过程对于参与者根本不知道监听协调者的存在,对于监听协调者来说,对日志的处理和协调者保持一致,唯一的差别就是不向参与者发送消息,从而减少了通讯量,监听协调者与主协调者要以一定的频率交互信息,从而保证可以及检测到主协调者的状态,一旦死亡,监听协调者就马上取代主协调者进行协调工作,从而提高了系统的效率。[6]
3  改进3PC协议对故障的处理 3.1 站点故障
    3.1.1对于参与者,不管它在事务开始前,或在事务的进行过程中出现故障,协调者在发现时都要用本地的监听协调者来模拟它的活动,并在参与者恢复后由监听协调者把在故障过程中成功提交的事务交给它重新执行。因此,参与者的故障在这种协议下是可以恢复的。
    3.1.2 对于协调者,如果在它在日志中写入“全部提交”或“全部夭折”前或者在日志中写入“全部夭折”后,写入“事务结束”前发生故障,各参与者由于协调者出现故障而得不到协调者的命令,进而使各自的子事务夭折。这种情况下,在协调者故障消除后重启时,重启过程将通过检查日志找出这类未完成事务并把它们夭折。这样,整个事务就以最终夭折的形式得到恢复。[7]
    3.1.3 对于协调者,如果在它在日志中写入“全部提交”后,写入“事务结束”前发生故障,就可能会出现一些参与者收到了“提交”命令,而另外一些参与者却没有收到的情况。而这种情况很可能会导致在一个分布式事务中出现部分参与者提交,部分参与者夭折,进而破坏事务的原子性。为了能够从这种故障状态中恢复,协调者在故障消除后重启的过程中,必须得从日志中找出这类未完成的事务,让它们重新执行并得到提交。当然,对于那些已成功提交过的站点,重新执行的结果应该和以前一样。 3.2 报文丢失故障
    当系统有些控制报文丢失时,改进3PC协议采用超时法处理:
    3.2.1协调者没有及时发出“开始报文”,导致参与者等待超时,这时参与者决定夭折。
    3.2.2 协调者等待参与者投票结果超时,这时协调者决定夭折。
    3.2.3 当系统处于“赞成”提交状态,等持“准备提交”命令时出现超时,这时进入恢复处理过程。
    3.2.4 当参与者处于“准备提交”状态等待协调者的“提交”命令出现超时,也进入恢复处理,这时只要有至少有一个参与者处于活动状态,子事务就不会阻塞。因为恢复后的参与者可以从活动的子事务得到有关提交处理的信息,从而得知协调者的决定,依据协调者的决定确定自己应做的处理。3PC协议可以保证一个参与者在其它任何一个活动的参与者处于“赞成”提交状态时,不可能进入“提交”状态;以及一个参与者在另一个参与者进入“提交”状态或任何一个参与者都进入了“准备提交”状态时不能进入“夭折”状态。
    当某个协调者站点检测出它的一个参与站点出现故降,在3PC协议中的处理过程与2PC协议中的处理方法一样.并且还要依据情况启动监听协调者线程模拟故障站点。
    综上所述,寻找一种更为高效可靠的恢复协议将作为以后分布式事务处理的重点,在故障发生时要保证分布式数据库系统的安全性,还需要进一步研究和改进分布式数据恢复技术,力求在发生任何的系统软、硬件故障时,都能在提高分布式处理性能的前提下保证数据的正确、及时的恢复。实验证明,基于冗余技术的改进三段提交协议,通过增加协调者副本来减少信息交换量和阻塞次数, 提高了事务的成功率和协议的性能,在正确的实现故障恢复的前提下,保证了分布式数据库的可靠性和安全性。
参考文献
    [1]   张福涛.分布式数据库的安全研究与实现:[硕士学位论文]. 南京工业大学,2005
    [2]   宋静,刘心松等. 一种改进的2PC 协议及其性能. 微计算机信息.2006.6
    [3]   D.Daniels.Query compilations in a distributed database system. IBM Res. Rep. RJ 3423, IBM, 1982.72-103
    [4]   Microsoft Corporation: Microsoft SQL Server 6.5, Guide to Microsoft Distributed Transaction C oordinator,1996.150-160
    [5]   D Skeen. Non - blocking commit protocols. The ACM SIGMOD Conf on Management of Data, Ann Arbor, Michigan, 1981.50-53
    [6]   George Coulouris, Jean Collinear and Tim Kind berg. Distributed System Concepts and Design,2rd ED. Addison-Wesley.1994.36-39

共2页: 上一页 [1] 2


油田数据融合关键技术研究
数字图像中边缘检测算法综合研究
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图