协同系统中可扩展的动态容错方法

文档序号:7612715阅读:107来源:国知局
专利名称:协同系统中可扩展的动态容错方法
技术领域
本发明属于计算机支持协同工作(Computer Supported CooperativeWork,CSCW)领域,为一种新型的可扩展的动态容错方法。
背景技术
计算机支持协同工作支持多用户通过计算机及网络技术,以协调和协作的方式共同完成一项任务。随着网络技术的飞速发展,CSCW为在时空上分散的人们提供了一种“面对面”和“你见即我见”的协同工作环境,它能支持多个时间上分离、空间上分布而工作又相互依赖的协作成员的协同工作。在过去的几年,国际及国内有代表性的CSCW系统包括斯坦福研究所(SRI)研制的多媒体协同工作系统(The Collaborative Environment forConcurrent Engineering Design,CECED),普渡大学研制的SHASTRA协同工作的多媒体设计系统,IBM欧洲网络中心、DEC公司等共同开发的BERKOM多媒体协同服务器以及其它CSCW系统,如京通视频会议系统,3C(CAD/CAPP/CAM)智能协商系统等。目前协同系统已经广泛应用于支持群体用户协同工作。由于协同工作支持系统涉及群体用户协作,任何系统故障造成群体协作无法进行或结果丢失,从而,对群体协作的效率及结果影响很大。因此,在协同系统设计中,如何保证协同系统服务节点的高可靠性和性能是关系到用户对系统信赖程度的关键因素。
高可靠性的实现方式,除了要求硬件设备具有高可靠性的设计外,还要有良好的部件容错机制。实践证明,容错设计对计算机应用系统可靠性的提高是十分有效的。传统的容错设计一般采用服务冗余的方式服务节点上的服务进程(称为基本服务进程)复制多份(称为后备服务进程)分别运行在不同的节点上。根据冗余服务的作用方式,可分为主动复制和主用备份。在主动复制方式中基本服务进程和所有后备服务进程同时接收客户请求并进行请求处理,然后将处理结果都返回给客户,由客户选择返回结果。主动复制方式虽然服务进程失效对客户透明,但通信开销比较大,而且由于系统资源有限,冗余服务同时响应请求,从总体上降低了系统的性能。在主用备份方式中基本服务进程接收客户请求进行处理,后备进程周期性地与基本服务进程通信,与其保持同步。当基本服务进程失效后,从后备服务进程中选取一个进程作为基本服务进程。这种方式同主动复制方式相比,大大减少了通信开销,但备份进程在基本进程正常的情况下处于“闲置”状态,浪费了系统资源并且系统负载不均衡。当协同工作任务数量增加时,协同服务节点容易形成系统瓶颈,性能降低。因此,这两种容错方式应用于协同环境中均存在一定的问题。此外,在协同工作支持环境中,协同工作任务数量是动态变化的,反映为服务节点性能的动态变化,因此要求服务节点的容错是动态可扩展的。但由上述分析可知,主动复制和主用备份两种容错方式都不能很好地适应协同系统动态变化的特性。

发明内容
本发明的目的就是针对现有技术的不足,提供一种协同系统中可扩展的动态容错方法,该方法能够使系统具有良好容错和负载均衡能力。
本发明提供的一种协同系统中可扩展的动态容错方法,包括以下步骤(1)当服务请求到达时,服务管理器按如下步骤为其分配服务节点(1.1)判断环上最大节点号RN是否为零,如果RN=0,要构建r元服务基环,并设定令牌号为0,进入步骤(1.2);否则直接进入步骤(1.2);(1.2)将协同任务t分配给持有令牌的服务节点N(i),其负载增1,将任务t添加到持有令牌节点的任务集合中;(1.3)判断令牌号是否大于最大节点号,如果是,将持有令牌的节点加入服务环,同时令RN=RN+1,进入步骤(1.4);否则直接进入步骤(1.4);(1.4)判断冗余度r是否大于最大节点号RN,如果是,在备用节点中将新的节点加入服务环,使其扩展构成r元服务环,进入步骤(1.5);否则直接进入步骤(1.5);(1.5)备份任务t到服务环上与持有令牌的服务节点最近的r-1个节点上;(1.6)判断服务环上是否存在负载小于阈值的有效节点,如果不存在,则将令牌传递给下一个即将加入服务环的环外备用节点,并为其分配节点号等于最大节点号加1,然后进入步骤(2);如果存在,则传递令牌到环上下一个负载小于阈值的有效节点,然后进入步骤(2);(2)服务节点N(i)执行该协同任务,在执行任务的过程中,检查服务环中是否有失效节点N(i),如果无失效节点,转入步骤(3);否则,服务管理器按如下步骤重构服务环(2.1)判断失效节点N(i)的负载是否等于零,如果是,则转步骤(2.4);否则进入步骤(2.2);(2.2)从失效节点N(i)的任务集合中取出任务t,检查任务t的逻辑环中是否存在负载小于负载阈值的有效节点N(j),如果不存在,则从备用节点中取出一个节点替代节点N(i),进入步骤(3);否则进入步骤(2.3);(2.3)将节点N(j)作为N(i)的一个替代节点,将任务t加入节点N(j)的任务集合中,同时节点N(i)的负载减1,然后转步骤(2.1);(2.4)删除节点N(i),同时所有大于i的节点号减1;(2.5)判断持有令牌的节点负载是否等于阈值,如果不是,进入步骤(3);否则进入步骤(2.6);(2.6)判断服务环上是否存在负载小于阈值的有效节点,如果存在,则传递令牌到下一个负载小于阈值的节点,然后进入步骤(3);否则,将令牌传给环外的备用节点,并为其分配节点号等于最大节点号加1,然后进入步骤(3);(3)判断任务t是否完成,如果否,转入步骤(2),否则,进行如下步骤(3.1)从节点N(i)的任务集合中删除任务t,并删除节点N(i)中任务t对应的逻辑环T_C,将节点N(i)负载减1,
(3.2)判断令牌号是否大于最大节点号,如果是,将令牌传递给节点N(i),结束,否则直接结束。
步骤(1.1)中r元服务基环构建方法为根据任务t的服务冗余度r,从备用节点中取出r个服务节点,分别设置节点号为0,1,…,r-1,记为N(0),N(1),……,N(r-1);然后分配节点N(0)给协同任务作为主服务节点,其他节点作为N(0)的备份节点;最后这r个节点N(0),N(1),……,N(r-1)连接成环,构成由r个节点{N(0),N(1),……,N(r-1)}的r元服务基环。
步骤(1.4)中服务环扩展方式为首先增加r-RN个新节点,分配节点号分别为N(r),N(r+1),……,N(RN-1),然后根据服务基环构建方式重构服务环。
本发明是一种基于主用备份方式改进的结构,主服务节点接收客户请求进行处理,备份节点根据任务冗余度大小动态分配,而不像主用备份方式结构规定的每个任务的备份节点都必须是相同的。备份服务节点上的后备进程周期性地与主服务节点上的基本服务进程通信,与其保持同步。当基本服务进程失效后,从后备服务进程中选取一个作为基本服务进程。同时,任何一个服务节点都可以作为系统任务的主服务节点和备份节点,达到最大限度的利用系统资源。这种方式同主用备份方式相比,大大减少了备份进程在基本进程正常的情况下处于“闲置”的状态,有效的利用了系统资源。本发明能够根据节点性能和协同系统负载状况即协同工作的任务数量动态设定服务节点的负载阈值,改变服务冗余度,不仅提高了服务效率,而且以一种简单有效的方式实现了负载平衡。具体而言,本发明主要有以下特点(1)动态性本发明利用系统的负载信息动态地定义服务节点的负载阈值,负载阈值的大小可根据系统负载的大小和系统可提供服务节点的数量及性能决定,可改变服务冗余度,既提高了系统可靠性和消息服务的效率,又不过多地占用系统资源。
(2)可扩展性服务节点的状态复制算法与通信协议分离,不涉及底层通信机制,具有良好的可扩展性。
(3)细粒度的负载均衡本发明采用的是基于负载的调度方式,能精确定位负载最轻的节点,达到极佳的负载均衡效果,并且服务节点在作为备份节点的同时为协同工作任务提供服务,避免了系统资源的浪费和单一节点提供服务而造成的系统“瓶颈”。
(4)对用户透明容错机制对用户完全透明,并且故障处理及时、系统恢复快、开销小。
(5)良好的性价比与专用高可用性服务器相比,利用本发明的服务系统具有更好的容错能力和更强的计算能力,而且系统的实现是经济的,易支付的。


图1为本发明的流程示意图;图2为服务节点分配流程图;图3为本发明的k元服务环体系结构图;图4为节点失效后服务环重构流程图;图5为协同任务删除流程图。
具体实施例方式
下面结合附图和实例对本发明作进一步详细的说明。
如图1所示,本发明包括以下步骤(1)当有服务请求到达时,服务管理器为其分配服务节点,服务请求变为协同任务;(2)执行该协同任务,在执行任务的过程中,定时检查服务环中是否有失效节点。如果有失效节点,服务管理器发出指令重构服务环。如果没有失效节点,执行步骤(3);(3)检查任务是否完成。如果任务完成,服务节点删除完成任务,结束;否则,回到步骤(2)。
系统可以根据节点的性能,为各节点选择合适的负载阈值,并针对不同的服务请求设定任务的服务冗余度r。各服务节点的负载阈值、协同任务数量以及其冗余度r决定了服务环的节点数目。环上节点并行为协同任务提供服务,既提高了消息的处理能力,又有效利用系统资源。同时,在环上存在某些节点失效的情况下,服务环结构保证有效服务节点能随时接替失效服务节点的工作,自动重构服务环,为协同任务提供持续可靠的消息服务,保证服务的“不断流”。
为更好的阐述服务环结构的工作原理,我们将节点号等于令牌号的节点称为持有令牌节点。以下详细说明上述三个步骤的工作原理与流程(1)服务节点分配针对不同的服务请求设定任务的服务冗余度r,然后为其分配服务节点。如图2所示,具体步骤如下(1.1)确定服务环是否存在,即判断环上最大节点号RN是否为零。如果环上最大节点号为零,说明服务环不存在,需要构建r元服务基环,并设定令牌号为0;如果服务环存在,则进行第2步;其中,r元服务环构建方式如下首先根据任务t的服务冗余度r从备用节点中取出r个服务节点,分别设置节点号为0,1,…,r-1,记为N(0),N(1),……,N(r-1);然后分配节点N(0)给协同任务作为主服务节点,其他节点作为N(0)的备份节点;最后这r个节点N(0),N(1),……,N(r-1)连接成环。由r个节点{N(0),N(1),……,N(r-1)}构成的r元服务基环的连接方式有如下特征(a)当服务节点个数为r(r为正整数,r≥2),最大服务节点号RN=r-1时,N(i)与N(j)和N(1)连接,其中j=(i-1)modr;l=(i+1)modr;j,l≥0且为整数。
(b)r元服务环中任意两点N(i)与N(j)之间的距离d(i,j)=(i-j)modr。r元服务环结构图如图3所示。
(1.2)将协同任务t分配给持有令牌的服务节点,其负载增1,将任务t添加到持有令牌节点的任务集合中;
(1.3)令牌号是否大于最大节点号。如果是,说明分配的节点是服务环外的节点,则将持有令牌节点加入服务环,同时最大节点号增1;(1.4)冗余度r是否大于最大节点号RN。如果是,说明服务环上节点数目不满足任务t的冗余度要求,则需在备用节点中将新的节点加入服务环,使其扩展构成r元服务环;其中,服务环扩展方式如下首先增加r-RN个新节点,分配节点号分别为N(r),N(r+1),……,N(RN-1),然后根据上述的服务环构建方式重构服务环;(1.5)备份任务t到服务环上与持有令牌的服务节点最近的r-1个节点上假如服务环为k元服务环,具有冗余度为r的任务t分配到主服务节点N(i)时,根据“由近及远”的原则,选取服务环上距离主服务节点最近的r-1个节点作为任务t的备份节点。备份节点号为(i-m)modk和(i+n)modk,其中 备份完成后,将令牌传递到下一个负载小于阈值的节点;(1.6)服务环上是否存在负载小于阈值的有效节点。如果不存在,则将令牌传递给下一个即将加入服务环的环外备用节点,并为其分配节点号等于最大节点号加1;如果存在,则传递令牌到环上下一个负载小于阈值的有效节点。
服务节点分配完毕后,任务t的逻辑环T_C就是其主服务节点和备份服务节点所组成的集合。系统利用令牌传递方式为协同工作任务分配服务环上轻载的服务节点,保证了服务环上节点的负载平衡。同时,服务环可以适应协同任务数量及冗余度的动态变化,具有良好的可扩展性。
(2)服务环重构服务节点N(i)失效后,首先为N(i)上的任务寻找替代的服务节点,重构服务环;然后查询持有令牌的节点是否依然满足负载小于阈值的条件,如果不满足,则需要传递令牌到下一个负载小于阈值的有效节点。
节点N(i)失效后服务环重构NodeFailure(N(i)),如图4所示,具体实施步骤如下(2.1)失效节点N(i)的负载是否等于零。如果是,则转步骤(2.4);否则继续下一步;(2.2)从节点N(i)的任务集合中取出任务t,检查任务t的逻辑环中是否存在负载小于负载阈值的有效节点N(j),如果不存在,则从备用节点中取出一个节点替代节点N(i),结束;否则继续下一步;(2.3)节点N(j)作为N(i)的一个替代节点,将任务t加入节点N(j)的任务集合中,同时节点N(i)的负载减1,然后转步骤(2.1);(2.4)删除节点N(i),同时所有大于i的节点号减1;(2.5)持有令牌的节点负载是否等于阈值。如果不是,则结束;否则继续下一步;(2.6)服务环上是否存在负载小于阈值的有效节点。如果存在,则传递令牌到下一个负载小于阈值的节点;否则,说明环上节点负载都达到最大负载,将令牌传给环外的备用节点,并为其分配节点号等于最大节点号加1。
假定服务环上节点N(i)失效,则分别为N(i)上协同任务寻找替代节点,即寻找N(i)上协同任务集合中每个任务的替代服务节点。假设任务集合中的任务t,其逻辑环为T_C,当协同任务t的主服务节点失效后,在T_C内寻找与失效节点N(i)最近且负载小于负载阈值的有效节点作为其替代节点。如果该节点存在,则删除失效节点并重构服务环,否则从备用节点中取出一个节点作为N(i)节点的替代节点重构服务环。
(3)协同任务删除服务节点负载,体现为节点上协同任务的数量,随着协同任务的创建和删除是动态变化的,节点上任务反映了协同任务在服务节点上的当前状态,因此当节点N(i)上冗余度为r的任务t结束退出或被删除时,节点上负载要随之变化。
节点N(i)上冗余度为r的协同任务t的删除TaskDeleting(t),流程图见图5所示,具体实施步骤如下
(3.1)是否删除节点N(i)的任务t,如果是,从节点N(i)的任务集合中删除任务t;否则结束;(3.2)删除节点N(i)中任务t对应的逻辑环T_C;(3.3)节点N(i)负载减1;(3.4)令牌号是否大于最大节点号。如果是,说明令牌节点为服务环外的节点,则将令牌传递给节点N(i)。
实例利用本发明所说的容错方法,在实验室提供了10个物理服务器,并且这些节点都能提供服务节点分配,协同任务删除,服务环重构等服务。10个物理服务器的硬件配置以及根据机器性能设置的负载阈值如下

创建第一个冗余度为4的协同任务t1时,系统构建服务基环我们从10台备用机中取出4个服务节点,记为N(0),N(1),N(2),N(3)。按照以下列方式连接成服务环节点N(0)与节点N(3),N(1)连接;节点N(1)与节点N(0),N(2)连接;节点N(2)与节点N(1),N(3)连接;节点N(3)与节点N(2),N(0)连接。其中N(0)为任务t1的主服务节点,N(1),N(2)和N(3)为t1的备份服务节点,t1成为节点N(0)上任务,具有逻辑环T_C={N(0),N(1),N(2),N(3)}。基环创建时间为5毫秒。
创建第二个冗余度为7的协同任务t2时,由于服务环上节点个数是4,服务环不满足协同任务t2的冗余度要求,再从备用节点中取出3个节点加入服务环,分别记为N(4),N(5),N(6)。服务环由4元服务环扩展为7元服务环。然后分配节点N(1)作为任务t2的主服务节点,备份节点为N(0),N(2),N(3),N(4),N(5),N(6)。t2成为节点N(1)上任务,具有逻辑环T_C={N(1),N(0),N(2),N(3),N(4),N(5),N(6)}。
创建第三个冗余度为3的协同任务t3时,分配节点N(2)作为任务t3的主服务节点,备份节点为N(1),N(3)。t3成为节点N(2)上任务,具有逻辑环T_C={N(1),N(2),N(3)}。
同上述方式,系统依次创建协同任务t4,t5,……分配环上轻载的节点作为其主服务节点提供服务并确定任务的逻辑环。当环上的节点负载均达到其负载阈值,则将新的节点加入服务环,保证服务的性能。
经多次测试,采用本发明所说的协同系统可扩展容错方法的服务环,对于节点失效后,服务环仍能正常工作,由于失效节点上的任务会被重新分配到有效节点,以及重构服务环,保证了正在执行的服务请求不会受到影响。
权利要求
1.一种协同系统中可扩展的动态容错方法,包括以下步骤(1)当服务请求到达时,服务管理器按如下步骤为其分配服务节点(1.1)判断环上最大节点号RN是否为零,如果RN=0,要构建r元服务基环,并设定令牌号为0,进入步骤(1.2);否则直接进入步骤(1.2);(1.2)将协同任务t分配给持有令牌的服务节点N(i),其负载增1,将任务t添加到持有令牌节点的任务集合中;(1.3)判断令牌号是否大于最大节点号,如果是,将持有令牌的节点加入服务环,同时令RN=RN+1,进入步骤(1.4);否则直接进入步骤(1.4);(1.4)判断冗余度r是否大于最大节点号RN,如果是,在备用节点中将新的节点加入服务环,使其扩展构成r元服务环,进入步骤(1.5);否则直接进入步骤(1.5);(1.5)备份任务t到服务环上与持有令牌的服务节点最近的r-1个节点上;(1.6)判断服务环上是否存在负载小于阈值的有效节点,如果不存在,则将令牌传递给下一个即将加入服务环的环外备用节点,并为其分配节点号等于最大节点号加1,然后进入步骤(2);如果存在,则传递令牌到环上下一个负载小于阈值的有效节点,然后进入步骤(2);(2)服务节点N(i)执行该协同任务,在执行任务的过程中,检查服务环中是否有失效节点N(i),如果无失效节点,转入步骤(3);否则,服务管理器按如下步骤重构服务环(2.1)判断失效节点N(i)的负载是否等于零,如果是,则转步骤(2.4);否则进入步骤(2.2);(2.2)从失效节点N(i)的任务集合中取出任务t,检查任务t的逻辑环中是否存在负载小于负载阈值的有效节点N(j),如果不存在,则从备用节点中取出一个节点替代节点N(i),进入步骤(3);否则进入步骤(2.3);(2.3)将节点N(j)作为N(i)的一个替代节点,将任务t加入节点N(j)的任务集合中,同时节点N(i)的负载减1,然后转步骤(2.1);(2.4)删除节点N(i),同时所有大于i的节点号减1;(2.5)判断持有令牌的节点负载是否等于阈值,如果不是,进入步骤(3);否则进入步骤(2.6);(2.6)判断服务环上是否存在负载小于阈值的有效节点,如果存在,则传递令牌到下一个负载小于阈值的节点,然后进入步骤(3);否则,将令牌传给环外的备用节点,并为其分配节点号等于最大节点号加1,然后进入步骤(3);(3)判断任务t是否完成,如果否,转入步骤(2),否则,进行如下步骤(3.1)从节点N(i)的任务集合中删除任务t,并删除节点N(i)中任务t对应的逻辑环T_C,将节点N(i)负载减1,(3.2)判断令牌号是否大于最大节点号,如果是,将令牌传递给节点N(i),结束,否则直接结束。
2.根据权利要求1所述的方法,其特征在于步骤(1.1)中r元服务基环构建方法为根据任务t的服务冗余度r,从备用节点中取出r个服务节点,分别设置节点号为0,1,…,r-1,记为N(0),N(1),……,N(r-1);然后分配节点N(0)给协同任务作为主服务节点,其他节点作为N(0)的备份节点;最后这r个节点N(0),N(1),……,N(r-1)连接成环,构成由r个节点{N(0),N(1),……,N(r-1)}的r元服务基环。
3.根据权利要求2所述的方法,其特征在于步骤(1.4)中服务环扩展方式为首先增加r-RN个新节点,分配节点号分别为N(r),N(r+1),……,N(RN-1),然后根据服务基环构建方式重构服务环。
全文摘要
本发明公开了一种协同系统中可扩展的动态容错方法,该方法是基于主用备份方式的改进,主服务节点接收客户请求进行处理,备份节点根据任务冗余度大小动态分配;备份服务节点上的后备进程周期性地与主服务节点上的基本服务进程通信,与其保持同步。当基本服务进程失效后,从后备服务进程中选取一个作为基本服务进程。同时,任何一个服务节点都可以作为系统任务的主服务节点和备份节点,达到最大限度的利用系统资源。本发明减少了备份进程在基本进程正常的情况下处于“闲置”的状态,有效的利用了系统资源。本发明能够根据节点性能和协同系统负载状况,改变服务冗余度,不仅提高了服务效率,而且以一种简单有效的方式实现了负载平衡。
文档编号H04L12/18GK1744554SQ20051001958
公开日2006年3月8日 申请日期2005年10月13日 优先权日2005年10月13日
发明者金海 , 王玎, 李胜利, 袁平鹏, 李昌清, 孙盛, 黎时才, 邝坪, 战治国, 王辉 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1