一种基于社区概念的分布式容错方法

文档序号:9708173阅读:463来源:国知局
一种基于社区概念的分布式容错方法
【技术领域】
[0001] 本发明属于分布式计算容错领域,是一种通过将分布式计算节点分区的方式进行 容错信息归类,从而提高容错效率,降低容错控制成本的一种新型容错方法。
【背景技术】
[0002] 随着分布式计算的发展,计算的规模越来越大。由于计算节点的增加,系统故障率 也随着增加。数据显示,如ASCI -Q等大型的分布式计算集群,一个需要4096个CPU核心处理 的5小时的工作任务在一小时内的故障率为50%左右。分布式计算中的容错处理在并行计 算中显得越来越重要,特别是在现今云技术需求越来越大的情况下。造成系统故障的原因 是多种多样的,可能是因为网络连接丢失,可能是机器发生故障,也有可能是黑客攻击。在 故障分类中,以故障的表现形式来看,可分为fail-stop故障及Byzantine故障。fail-stop 类的故障是一种出现故障系统即停止运行的故障,它不会引起对外的输入或是主动提示系 统故障的信息;而Byzantine故障不会引起系统的停止,出现Byzantine故障时,系统会继续 运行,并输入一些错误的结果进而影响后续的计算结果。本发明注重解决fail-stop类的故 障。
[0003] 在分布式容错方法中,常见的主要是检查点方法和消息日志方法。检查点方法的 本质是将系统运行的中间状态以各种参数的形式保存起来,当系统需要从故障中恢复的时 候,将检查点中保存的各种状态参数还原即可。检查点方法可以保存单个系统进程,也可以 同时保存整个系统的所有进程。在系统恢复的时候。检查点方法需要暂停整个系统的运行, 等待检查点的信息恢复完全后,整个系统才可重新运行,在一定程度上浪费了系统运行的 时间。与检查点方法相比,消息日志方法记录系统在运行过程中传递的消息(message),当 系统发生故障时,恢复系统通过重播日志记录的消息来达到恢复故障的目的。消息日志方 法是基于PWD(piece_wise deterministic)假设原理,在恢复的时候只需要重播故障点与 恢复点之间的消息即可,并且只需要暂停受影响的进程即可,这样有效地避免了检查点方 法的弊端。但消息日志方法需要记录系统进程在系统运行过程中传递的所有消息,如果该 系统运行过程中产生的消息过大,就会造成内存溢出等故障。这也是消息日志方法的主要 缺点之一。

【发明内容】

[0004] 本发明要克服现有检查点方法与消息日志方法的弊端,提供一种综合检查点方法 与消息日志方法的社区容错方法。社区容错方法是一种层次性的容错方法,它可以避免检 查点方法的弊端,相对应消息日志方法具有较小的内存消耗,并且具有较强的可扩展性。
[0005] 社区容错方法的基本原理是在并行计算中,一个大任务往往会被分解为几个不同 的小任务,并且将这一个个小任务分配给不同的CPU进行处理。在不同的CPU上运行着若干 个不同的进程,这些进程协同配合来完成这一个个小任务。在完成小任务的时候,每个进程 间的耦合程度是不相同的,一些进程之间有比较频繁的消息传递,而另外一些进程可能根 本就不会存在消息传递;具有比较频繁的消息传递的进程可以构造出一个较大的集团,在 本方法中,我们称之为社区,因为该社区内部的进程具有较为频繁的沟通。基于这个事实, 本方法将容错级别提高到了一组进程上,而不是单个的进程,通过构造进程社区,来内聚消 息传递,减少需要记录的消息数量,提高故障恢复的效率。
[0006] 社区容错方法的主要过程分为三个步骤。第一步是构建进程分区;第二步是记录 不同社区间所传递的消息及创建检查点;第三步是恢复出现的故障。
[0007] 第一步:构建进程分区。分区的原则是基于进程间的通信情况,社区内部进程通信 密集,而社区间没有通信或通信较少。进程社区的构造主要基于以下两个变量:社区的通信 直径dia和单个进程与已有社区间的距离dis。用符号匕表示社区i的所有进程的集合,定义 社区i的元特征扣?(1)=[心^(1)],心是该社区1中的进程的数量
为 整个社区的通信特征。S(pm)是社区i中进程pm的通信特征,计算方式如下:
其中符号?表示两个进程之间存在通信行为。基于这些 定义及计算方式,我们通过公式计算社区的通信直径
t区通信的直径值越 小,表示社区内的进程连接越紧密;相反,如果社区通信直径越大,则表示社区内的通信较 少。进程p m与已有社区i的距离定义为
实中
为进程pm与社区i的通信集合。本发明通过计算进程与已 有社区之间的距离,判断进程所属社区;通过社区的通信直径来计算一个社区内部的通信 频度,以判断是否对该社区进行分裂处理。通过进程分区与社区分裂,最终完成进程分区的 构建。若系统有新的计算节点加入,新的计算节点中的进程以同样的方法选择进入现有的 社区中。
[0008] 第二步,记录进程间所传递的消息以及创建检查点。在完成进程社区的构建后,社 区容错方法进入第二个步骤。对于社区内部的消息,社区容错方法将其视为一个整体,不对 消息进行记录,而是采用检查点方法,以减少整体容错过程中所记录的消息数量。对每个社 区,社区容错方法采用非协同检查点策略以保证不同社区的容错独立性,检查点被存放在 稳定的存储介质当中,确保系统故障后检查点的可用性。对于社区间的消息,该容错方法将 以悲观日志的方式记录消息。记录的对象为m. data+〈m. src,m. dest,m. ssn,m.rsn>,其中 m. data表示通信内容,m. src表示消息的来源进程,m. dest表示消息传递过程中的目标进 程,m. ssn为消息的发送进程对该消息设置的发送序列号,m.rsn为消息接收进程为消息设 置的接收序列号。这四组数据确保了在系统发生故障后,社区间的进程所传递的消息可以 依照故障前的发送与接收顺序执行。
[0009] 第三步,恢复系统故障。系统恢复是容错中的最后一步。在社区容错方法中,将消 息分为了社区内消息与社区间消息,通过对不同类型消息的处理以及检查点的保存处理来 进行故障恢复。当某一个进程社区的进程在某个时间点发生崩溃时,根据本方法的恢复策 略,崩溃进程社区将会回滚到它最近的一个检查点上,然后系统重播该检查点之后的所有 社区内部消息。注意:社区内部消息由该社区的进程自主重播。而社区间的消息将由稳定的 存储介质来重播。消息重播的次序由消息元组<m. src,m. dest,m. ssn,m. rsn>来决定。当崩 溃社区重新执行计算时,对外界社区会产生部分重复的消息。这些重复的消息也将由消息 元组〈m. src,m. dest,m. ssn,m. rsn>来判定,更具体地说是由其中的接收序列号m. rsn来决 定,当该值小于外界社区保存的对于该进程所在社区的最大接收序列号RSN值时,那么表示 该消息是重复消息,将被丢弃,反之将被接收。通过检查点的恢复与消息日志的重播,分布 式计算系统将保持一致性,即系统发生故障前的一致性状态,从而达到容错的效果。
[0010] 本发明的优点是:综合了检查点技术与消息日志技术,并采用分区的策略进行层 次性容错处理,极大的降低了容错过程中的内存使用,同时提高了容错的可扩展性,对于分 布式计算中的容错处理较有较强的实用性。
【附图说明】
[0011] 图1是社区容错方法三个基本步骤说明。
[0012] 图2是社区容错方法的检查点应用策略。
[0013]图3是社区容错方法的社区间消息的记录方式。
[0014] 图4是社区容错方法的故障恢复场景实例。
【具体实施方式】
[0015] 为了便于问题描述,下面将结合附图,描述本发明优选【具体实施方式】。
[0016] 图1示出了社区容错的三个主要步聚:1)构建进程分区,将不同的进程根据其通信 情况划分为不同的社区;2)创建检查点与记录消息,针对不同的分区情况,创建检查点并记 录消息;3)系统恢复。
[0017] 各步骤的【具体实施方式】如下:
[0018] 1)构建进程分区:在一个并行计算实施实例中,一个大任务往往会被分解为几个 不同的小任务,并且将这一个个小任务分配给不同的CPU进行处理。在不同的CPU上运行着 若干个不同的进程,这些进程协同配合来完成这一个个小任务。本步骤将不同的进程根据 其通信情况划分为不同的社区,具体步骤如下:
[0019] S1:收集并行系统中运行的所有进程信息{Pl,p2,p3, ···,?"},其中Pl为收集到的进 程信息。
[0020] S2:社区初始化。随机选择两个进程为种子进程,由这两个进程开始构建进程社 区。两个种子进程分别形成一个单进程的社区,即两个社区中都只有
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1