分布式协议的异常构造方法、系统和装置与流程

文档序号:18629988发布日期:2019-09-06 23:29阅读:205来源:国知局
分布式协议的异常构造方法、系统和装置与流程

本申请涉及计算机技术领域,特别是涉及一种分布式协议的异常构造方法、系统、装置、计算机可读存储介质和计算机设备。



背景技术:

分布式集群系统是包括多个分布式节点的系统,分布式集群系统中各分布式节点是相对独立的,各分布式节点之间基于分布式协议并且依赖于网络进行通信。通常网络的连通性和连接质量在某一时刻是无法确定的,导致分布式集群系统中任何一个分布式节点上运行的分布式应用进程可能会在某一时刻出现故障。因此,在设计分布式集群系统时,为避免上述情况,需要充分测试上述情况可能导致的大量异常场景。

目前,在构造分布式集群系统可能遇到的异常场景时,通常采用的方法是随机地在分布式集群系统中构造异常,虽然能够模拟任何可能发生的异常场景,但是由于随机性太大,效率极低。



技术实现要素:

基于此,有必要针对现有的对分布式协议构造异常的方式效率极低技术问题,提供一种分布式协议的异常构造方法、系统、装置、计算机可读存储介质和计算机设备。

一种分布式协议的异常构造方法,包括:

当监测到特征报文时,确定所述特征报文对应的链路;

按照预设的异常触发时机,持续缓存通过所述链路传输的网络报文;

按照预设的演练场景,构造符合所述异常触发时机的异常;

当所述异常生效后,解除对通过所述链路传输的网络报文的缓存,并传输缓存的所述网络报文。

一种分布式协议的异常构造系统,包括演练终端和分布式节点;

所述分布式节点用于当监测到特征报文时,确定所述特征报文对应的链路;按照通过所述演练终端预设的异常触发时机,持续缓存通过所述链路传输的网络报文;按照通过所述演练终端预设的演练场景,构造符合所述异常触发时机的异常;当所述异常生效后,解除对通过所述链路传输的网络报文的缓存,并传输缓存的所述网络报文;

所述演练终端用于获取各所述分布式节点针对所述网络报文生成的响应结果;根据所述响应结果判定各所述分布式节点上基于所述分布式协议的分布式应用进程在所述演练场景下能否正常运行。

一种分布式协议的异常构造装置,所述装置包括:

网络报文监测模块,用于当监测到特征报文时,确定所述特征报文对应的链路;

网络报文缓存模块,用于按照预设的异常触发时机,持续缓存通过所述链路传输的网络报文;

异常构造模块,用于按照预设的演练场景,构造符合所述异常触发时机的异常;

缓存解除模块,用于当所述异常生效后,解除对通过所述链路传输的网络报文的缓存,并传输缓存的所述网络报文。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述分布式协议的异常构造方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述分布式协议的异常构造方法的步骤。

上述分布式协议的异常构造方法、系统、装置、计算机可读存储介质和计算机设备中,能够有效地构造任意一个异常场景,实现了在某个异常触发时机下准确、可靠地触发异常。在监测到特征报文时,确定特征报文对应的链路,并按照预设的异常触发时机,持续缓存通过该链路传输的网络报文,然后按照预设的演练场景,立即构造符合该异常触发时机的异常,持续缓存通过该链路传输的网络报文可以保证构造的异常能够准确地在预设的异常触发时机生效。当异常生效后,就可以立即解除对网络报文的缓存并传输缓存的网络报文。由于特征报文可以按需设置为任一个基于该分布式协议的网络报文,因此,可以准确、可靠地对该分布式协议构造任一个可能的异常场景,避免了随机构造异常场景重复性很高的问题,大大提高了构造异常的效率。

附图说明

图1为一个实施例中分布式协议的异常构造方法的应用环境图;

图2为一个实施例中提供的3pc协议的流程示意图;

图3为一个实施例中分布式协议的异常构造方法的流程示意图;

图4为一个实施例中基于3pc协议的网络报文的示意图;

图5为一个实施例中分布式节点的框架示意图;

图6为一个实施例中在各个分布式节点上部署本申请所提供的分布式协议的异常构造装置的时序图;

图7为一个实施例中基于3pc协议的异常构造方法的流程示意图;

图8为另一个实施例中基于3pc协议的异常构造方法的流程示意图;

图9为一个实施例中撤销各个分布式节点上部署本申请所提供的分布式协议的异常构造装置的时序图;

图10为一个具体的实施例中分布式协议的异常构造方法的流程示意图;

图11为一个实施例中分布式协议的异常构造系统的架构示意图;

图12为另一个实施例中分布式协议的异常构造系统的架构示意图;

图13为一个实施例中分布式协议的异常构造装置的结构框图;

图14为另一个实施例中分布式协议的异常构造装置的结构框图;

图15为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中分布式协议的异常构造方法的应用环境图。参照图1,该分布式协议的异常构造方法应用于分布式协议的异常构造系统。该分布式协议的异常构造系统包括演练终端110和分布式集群120,分布式集群120包括三个分布式节点,分别为第一分布式节点120a,第二分布式节点120b以及第三分布式节点120c。现实场景中分布式集群120可以包括大量的分布式节点,此处仅以三个来举例说明。演练终端110与分布式集群120中的各分布式节点通过网络连接。各分布式节点均可以按照如下步骤构造异常:当监测到特征报文时,确定特征报文对应的链路;按照预设的异常触发时机,持续缓存通过链路传输的网络报文;按照预设的演练场景,构造符合异常触发时机的异常;当异常生效后,解除对通过链路传输的网络报文的缓存,并传输缓存的网络报文。演练终端是异常演练执行者所使用的设备,演练终端110可以根据各分布式节点对网络报文的响应结果判定各分布式节点上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

演练终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。分布式集群120中的各个分布式节点可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

需要说明的是,本申请所涉及的分布式协议指的是需要多个分布式节点多次网络交互协同完成一项业务所依赖的通信规则,分布式协议可以是开发人员按照业务需求自己实现的原生协议,也可以是开源分布式库、开源分布式组件中实现的分布式协议,比如2pc(twophasecommitmentprotocol,两阶段提交协议)、3pc(threephasecommitmentprotocol,三阶段提交协议)、raft协议(一种分布式一致性协议)、zab协议(一种消息广播过程使用的原子广播协议)、paxos协议(一种基于消息传递的一致性协议)等等。分布式应用进程则是基于分布式协议的分布在不同分布式节点上的应用程序,各分布式节点上运行的分布式应用进程通过网络来共同完成业务。

如图2所示,为一个实施例中提供的3pc协议的完整流程示意图。参照图2,3pc协议将事务的提交过程分为cancommit、precommit、docommit三个阶段来进行处理。交互的过程中需要作为协调者的分布式节点与作为参与者的分布式节点进行网络交互,共同完成事务的提交。在cancommit阶段,作为协调者的分布式节点向所有作为参与者的分布式节点发出包含事务内容的cancommit请求,询问是否可以提交事务,并等待所有作为参与者的分布式节点的答复;作为参与者的分布式节点在收到cancommit请求后,如果认为可以执行事务操作,则反馈yes并进入precommit阶段,否则反馈no。在precommit阶段,作为协调者的分布式节点向所有作为参与者的分布式节点发出precommit请求,所有作为参与者的分布式节点在收到precommit请求后反馈ack响应则会进入docommit阶段,若任一个作为参与者的分布式节点反馈no响应,或者作为协调者的分布式节点等待超时没有接收到所有作为参与者的分布式节点反馈时,则会中断事务的提交过程。在docommit阶段,作为协调者的分布式节点向所有作为参与者的分布式节点发出docommit请求,所有作为参与者的分布式节点在收到precommit请求后反馈ack响应则会完成事务的提交,若任一个作为参与者的分布式节点反馈no响应,或者作为协调者的分布式节点等待超时没有接收到所有作为参与者的分布式节点反馈时,则会中断事务的提交过程。

如图3所示,在一个实施例中,提供了一种分布式协议的异常构造方法。本实施例主要以该方法应用于上述图1中分布式集群120所包括的任意一个分布式节点来举例说明。

参照图3,该分布式协议的异常构造方法具体包括如下步骤:

s302,当监测到特征报文时,确定特征报文对应的链路。

分布式集群在某个时刻出现异常的场景可以收敛为:在某个网络交互前出现异常和在某个网络交互后出现异常,在某个网络交互前就是在某个网络报文传输之前,在某个网络交互后就是在某个网络报文传输之后,因此,当监测到某个特征报文时,执行s302之后的步骤,可以构造出分布式集群经常出现的异常场景。

其中,特征报文是符合设置的网络报文特征的网络报文,也是待构造的异常所针对的网络报文。链路是特征报文对应的数据传输通道。为了能够可靠地针对基于分布式协议的某个网络报文构造异常场景,分布式节点就需要对传输的基于分布式协议进行交互的网络报文进行监测,在监测到特征报文时,确定特征报文所对应的链路。

在一个实施例中,可通过演练终端在分布式节点上预先设置网络报文特征,分布式节点就可以根据设置的网络报文特征对网络报文进行监测。各分布式节点在整个分布式集群中的功能可能不同,可以针对不同功能的分布式节点设置不同的网络报文特征,以构造针对不同网络交互的异常。也可以对当前的分布式节点上设置多个网络报文特征,这样,当分布式节点监测分别监测到相应的网络报文时,可以分别对这些网络报文构造异常。

比如,对于3pc协议,可以针对“cancommit请求报文”、“cancommit响应报文”、“precommit请求报文”、“precommit响应报文”、“docommit请求报文”、“docommit响应报文”、“abort报文”以及对应的“ack报文”等分别设置对应的网络报文特征。也就是说,不同类型的网络报文对应了不同的网络报文特征,这样,在监测网络报文时,就可以根据网络报文特征判断报文类型,从而确定监测到特征报文。

在一个实施例中,当监测到特征报文时,确定特征报文对应的链路的步骤具体包括:监测基于分布式协议传输的网络报文;从网络报文中确定与预设的网络报文特征匹配的特征报文;根据特征报文中的源地址和目的地址确定对应的链路。

其中,本申请所提供的方法所提及的网络报文指的是基于分布式协议进行交互的网络报文,而不包括执行本申请所提供的方法时分布式节点之间相互通信生成的报文。网络报文特征用于确定监测的网络报文所属的分布式协议和报文类型,从而可以确定该网络报文是否为特征报文。

具体地,分布式节点可以对基于分布式协议传输的网络报文进行监测,并按照预设的网络报文特征从监测的网络报文中确定特征报文,根据特征报文的报文格式,提取报文的内容,得到特征报文中的源地址和目的地址,从而可以根据源地址和目的地址确定用于传输该特征报文的链路。该链路是当前的分布式节点与分布式集群中的另一个分布式节点进行交互的链路。

如图4所示,为一个实施例中基于3pc协议的网络报文的示意图。参照图4,编号1到12的网络报文均是基于3pc协议进行交互的报文。作为协调者的分布式节点、作为参与者a的分布式节点以及作为参与者b的分布式节点均可以对这些网络报文进行监测,从而在这些网络报文的传输前后构造异常,也就能够可靠地模拟3pc协议在网络交互的各个阶段出现异常的场景。

在一些实施例中,设置的网络报文特征包括:ip地址、端口、报文长度、报文长度范围。对于非加密的网络报文,设置的网络报文特征还可以包括报文内容;对于加密的网络报文,设置的网络报文特征还可以包括报文发送的频率、先后顺序等时域特征。

其中,ip地址和端口用于确定网络报文所源自的分布式节点以及该节点上运行的分布式应用进程,或者确定网络报文将要发送至的分布式节点以及该节点上运行的分布式应用进程,从而确定该网络报文所对应的分布式协议。具体地,分布式节点可以提取监测的网络报文的ip地址和端口,将提取的ip地址和端口与预设的ip地址和端口进行匹配,可以判断该网络报文是否是基于某个分布式协议的网络报文。

一般不同类型报文所占的字节数不同,具有不同的报文长度,因此报文长度、报文长度范围可以用于进一步判断该网络报文的报文类型。分布式节点可以进一步计算监测到的网络报文的报文长度,将其与预设的报文长度进行匹配,匹配成功则说明该网络报文为特征报文。

针对报文长度、报文长度范围不足以区分报文类型的网络报文,在网络报文未被加密的情况下,分布式节点还可以提取网络报文的部分或全部报文内容,将提取的报文内容与预设的报文内容进行匹配,匹配成功则说明该网络报文为特征报文。在网络报文被加密的情况下,分布式节点可以统计网络报文发送的频率、先后顺序等,将统计的频率、先后顺序与预设的相应报文特征进行匹配,匹配成功则说明该网络报文是特征报文。

s304,按照预设的异常触发时机,持续缓存通过链路传输的网络报文。

由于分布式集群在某个时刻出现异常的场景可以收敛为在某个网络交互前出现异常和在某个网络交互后出现异常,因此,为了能够按照预设的异常触发时机可靠地构造异常场景,就要防止分布式节点在异常在未生效之前正常交互,需要分布式节点持续缓存与确定的链路对应的分布式节点之间传输的网络报文。传输的网络报文包括待发送至另一分布式节点的网络报文和待接收的另一分布式节点发送的网络报文。也就是,将生成的待发送的网络报文先持续缓存,暂不发送至另一分布式节点;将待接收的网络报文先缓存在本地,暂不传递至本地运行的分布式应用进程。

异常触发时机是监测到特征报文时构造异常的时机,可对通过步骤s302中确定的链路之间传输的报文进行缓存来保证在监测到特征报文时按照预设的异常触发时机构造异常。预设的异常触发时机包括传输报文前触发和传输报文后触发。缓存的网络报文是通过确定的链路传输的网络报文,也就是并不包括分布式节点执行本申请所提供的方法时相互通信传输的报文,能够保证本申请所提供方法的顺利执行。

在一个实施例中,可通过演练终端在分布式节点上预先设置异常触发时机,分布式节点就可以按照设置的异常触发时机对通过链路传输的网络报文进行缓存。不同分布式节点上预设的异常触发时机可以根据实际在异常演练时的演练目的进行设置。对于同一类型的特征报文,对不同的分布式节点可以设置不同的异常触发时机,也可以设置相同的异常触发时机。对于同一分布式节点,针对同一类型的特征报文可以设置多个不同的异常触发时机,也就是,可以是传输报文前触发,也可以是传输报文后触发。

比如,对于同一分布式节点,设置的网络报文特征为与a报文对应的特征,设置的异常触发时机为接收特征报文前触发,则会在接收a报文前开始缓存报文,以将异常在接收a报文之前触发;又比如,设置的网络报文特征为与b报文对应的特征,设置的异常触发时机为接收特征报文后触发,则会在接收b报文之后开始缓存报文,以将异常在接收b报文之后触发。这里的a报文和b报文可以是同一类型的网络报文,也可以是不同类型的网络报文。

在一个实施例中,按照预设的异常触发时机,持续缓存通过链路传输的网络报文的步骤具体包括:当预设的异常触发时机为传输报文前触发时,则持续缓存包括特征报文在内的、通过链路传输的网络报文;当预设的异常触发时机为传输报文后触发时,则持续缓存不包括特征报文在内的、通过链路传输的网络报文。

具体地,当预设的异常触发时机为传输报文前触发时,则需要在传输监测到的特征报文之前构造异常,因此,需要持续缓存包括监测到的特征报文在内的、通过上述链路传输的网络报文,也就是先将特征报文缓存,才能在步骤s306中构造符合“在传输报文前触发”的异常。若该特征报文是生成的待发送出去的网络报文,则能够实现在该特征报文被发送出去之前构造异常,若该特征报文是待接收的网络报文,则能够实现在本地运行的分布式应用进程接收到该特征报文之前构造异常。

当预设的异常触发时机为传输报文后触发时,则需要在传输监测到的特征报文之后构造异常,因此,需要持续缓存不包括监测到的特征报文在内的、通过上述链路传输的网络报文,也就是在传输特征报文之后,才开始缓存报文,才能在步骤s306中构造符合“在传输报文后触发”的异常。若该特征报文是生成的待发送出去的网络报文,则能够实现在该特征报文被发送出去之后构造异常,若该特征报文是待接收的网络报文,则能够实现在本地运行的分布式应用进程接收到该特征报文之后构造异常。

在上述实施例中,通过持续缓存通过上述链路传输的特征报文,能够避免在构造的异常未生效的情况下分布式节点之间的正常通信,使得构造的异常能准确地在某种异常场景下生效。

在一些实施例中,为了直接将分布式节点之间基于分布式协议进行网络交互时传输的网络报文与执行本申请所提供的方法相互通信时生成的报文区分开,提高缓存网络报文的效率,可以在每个分布式节点上设置分布式应用进程使用的网卡以及本申请所提供的分布式协议的异常构造装置所使用的网卡。并且,区分开报文后,在监测特征报文时,仅需对分布式应用进程使用的网卡传输的网络报文进行监测,能够提高从网络报文中监测到特征报文的效率,从而提高构造异常场景的效率。

如图5所示,为一个实施例中分布式节点的框架示意图。参照图5,在分布式节点500上运行有基于分布式协议实现的分布式应用进程502,还包括基于本申请所提供的方法实现的分布式协议的异常构造装置504,还包括网络协议栈510,网络协议栈510包括实现分布式应用进程502的协议栈代码以及实现分布式协议的异常构造装置504的协议栈代码。分布式节点500还包括用于传输分布式应用进程生成的网络报文的业务网卡506,还包括分布式协议的异常构造装置504使用的演练网卡508,演练网卡508用于传输各分布式节点在执行本申请所提供的方法需要相互通信时生成的报文。比如,第一分布式节点通过演练网卡通知第二分布式节点构造异常的报文。在一些实施例中,也可以不需要演练网卡508,仅对业务网卡506通过确定的链路传输的网络报文进行缓存。

s306,按照预设的演练场景,构造符合异常触发时机的异常。

其中,演练场景是模拟的异常场景。演练场景可以包括网络分区异常场景,用于测试分布式协议的网络分区容错性,网络分区异常场景可以构造的异常包括:网络延时、网络抖动、网络中断、报文丢失、报文延时、报文抖动、报文错误、网络中断和网卡损坏等。演练场景还可以包括硬盘异常场景,用于测试硬盘故障容错性,硬盘异常场景下可以构造的异常包括:硬盘损坏、硬盘内存不够、硬盘读取速度较慢、硬盘文件损坏、硬盘文件大小超过系统限制和硬盘文件丢失等。演练场景还可以包括分布式节点异常场景,用于测试分布式协议的节点下线容错性,分布式节点异常场景下可以构造的异常包括:分布式节点上运行的分布式应用进程被杀死、分布式节点掉电和分布式节点上的cpu(centralprocessingunit,中央处理器)损坏等。在本实施例中,演练场景可根据异常演练的目的进行设计,现实场景中出现的故障在异常演练条件允许的情况下都可以作为演练场景。

具体地,分布式节点可以获取本地设置的演练场景需要构造的异常所对应的异常脚本文件,加载该异常脚本文件构造符合上述异常触发时机的异常。实际上,在步骤s304中,按照预设的异常触发时机缓存通过上述链路传输的网络报文之后,在步骤s306中所构造的异常就能准确符合上述的异常触发时机。

在一个实施例中,可通过演练终端在分布式节点上预先设置当监测到特征报文时所需构造的演练场景,分布式节点就可以根据设置的所需要构造的演练场景,构造符合异常触发时机的异常。在一些实施例中,设置的演练场景可包括多个,也就是,分布式节点监测到特征报文时所需构造的异常可以包括多个,能够提高对异常场景进行演练的效率。

在一个实施例中,上述分布式协议的异常构造方法还包括以下步骤:通过演练终端在各个分布式节点上设置网络报文特征、设置异常触发时机和设置在监测到特征报文时所需要构造的演练场景。

如图6所示,为一个实施例中通过演练终端在各个分布式节点上部署本申请所提供的分布式协议的异常构造装置的时序图。参照图6,在构造演练场景之前,需要异常演练执行者通过演练终端在各个分布式节点上部署分布式协议的异常构造装置。需要说明的是,在各个分布式节点上部署分布式协议的异常构造装置的先后顺序并没有受限制,只需要部署完成后演练终端能够与各个分布式节点通过另一网络链路正常通信即可。

在步骤s306中,分布式节点上的演练场景是按需设置的,构造异常的方式也是可以按需设置的,分布式节点可以通知其它分布式节点构造符合异常触发时机的异常,还可以在本地构造符合异常触发时机的异常。

在一个实施例中,按照预设的演练场景,构造符合异常触发时机的异常的步骤具体包括:获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;向需交互的分布式节点发送确定的异常对应的构造指令;构造指令用于指示分布式节点在本地构造确定的且符合异常触发时机的异常。

具体地,分布式节点可以在监测到特征报文后,确定与该特征报文对应的链路,然后按照预设的异常触发时机,持续缓存通过链路传输的网络报文,获取预先设置的演练场景,在该演练场景下所需构造的异常有多种,分布式节点可以从中确定在监测到特征报文时所需要构造的异常,然后向分布式集群中需交互的分布式节点发送针对确定的异常的构造指令,以使这一需交互的分布式节点按照构造指令在本地构造符合异常触发时机的异常。

比如,第一分布式节点在接收到第二分布式节点发送的网络报文a后,监测到该网络报文为特征报文时,第一分布式节点就持续缓存与第二分布式节点之间传输的网络报文b(即通过根据特征报文确定的链路传输的报文),并通过另一网络链路向第二分布式节点发送所需要构造的异常对应的构造指令,第二分布式节点可在接收到该构造指令后,在本地构造异常。在本实施例中,能够保证在第二分布式节点上构造的异常,是在第二分布式节点向第一分布式节点发送网络报文a后构造的。

如图7所示,为一个实施例中基于3pc协议的异常构造方法的示意图。参照图7,该分布式集群包括协调者节点702、第一参与者节点704和第二参与者节点706。图7中虚线所标识的步骤是各个分布式节点上基于3pc协议的分布式应用进程进行网络交互时所执行的步骤,实线所标识的步骤是本申请所提供的方法执行的步骤。

参照图7,首先异常演练执行者通过演练终端在协调者节点上设置网络报文特征,设置的网络报文特征用于监测出第二参与者节点发送的cancommit响应报文,异常演练执行者还通过演练终端在协调者节点上设置的异常触发时机是“接收报文后触发”,要构造的异常是“杀死分布式应用进程”。从图7可以看出,在协调者节点接收到第二参与者节点反馈的cancommit响应报文后,监测到接收的该报文与网络报文特征成功匹配了,即该报文为特征报文,由于异常触发时机是“接收报文后触发”,协调者节点就会将该报文传递至本地的分布式应用进程后开始持续缓存不包括该特征报文在内的网络报文,也就是缓存生成的待发送至第二参与者节点的precommit报文。然后协调者节点通过另一网络链路通知第二参与者节点构造“杀死分布式应用进程”的异常,第二参与者节点在接收到该通知后,执行杀死本地的分布式应用进程的指令,并向协调者节点反馈执行成功的通知。这样,就实现了通过协调者节点在第二参与者节点上可靠地构造符合异常触发时机的异常。

在一个实施例中,按照预设的演练场景,构造符合异常触发时机的异常的步骤具体包括:获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;在本地构造确定的且符合异常触发时机的异常。

具体地,分布式节点可以在监测到特征报文时,确定与特征报文对应的链路,按照预设的异常触发时机开始持续缓存通过该链路传输的网络报文,然后获取预先设置的演练场景,在该演练场景下所需构造的异常有多种,分布式节点可以从中确定在监测到特征报文时所需要构造的异常,然后在本地构造符合异常触发时机的异常。

如图8所示,为另一个实施例中基于3pc协议的异常构造方法的示意图。参照图8,首先异常演练执行者通过演练终端在第二参与者节点上设置网络报文特征,设置的网络报文特征用于监测出第二参与者节点发送的cancommit响应报文,异常演练执行者还通过演练终端在第二参与者节点上设置的异常触发时机是“发送报文后触发”,要构造的异常是“杀死分布式应用进程”。从图8可以看出,在第二参与者节点生成针对cancommit报文的cancommit响应报文后,监测到该cancommit响应报文与网络报文特征成功匹配,即该cancommit响应报文为特征报文,由于异常触发时机是“发送报文后触发”,协调者节点就会将该报文发送至协调者节点后开始持续缓存不包括该特征报文在内的网络报文,也就是缓存协调者节点发送的precommit报文。然后第二参与者节点按照设置的演练场景,在本地执行杀死分布式应用进程的指令,也就是在发送cancommit响应报文后构造异常,这样,就实现了在第二参与者节点上可靠地构造符合异常触发时机的异常。

s308,当异常生效后,解除对通过链路传输的网络报文的缓存,并传输缓存的网络报文。

当构造的异常是在分布式节点本地构造的异常时,分布式节点可以直确定异常是否生效,当构造的异常在通知另一需交互的分布式节点构造的异常时,则分布式节点可以获取该分布式节点反馈的异常生效的通知。具体地,当构造的异常生效后,分布式节点不再缓存通过确定的链路传输的网络报文,并将已缓存的网络报文通过上述确定的链路传输至相应的另一分布式节点。

在本实施例中,解除对网络报文的缓存以及传输已经缓存的网络报文,能够模拟构造的异常已经生效后,分布式节点上运行的分布式应用进程能否继续按照预期正常交互。

比如,在图7中,协调者节点在收到第二参与者节点反馈异常构造成功的通知后,将缓存的待发送至第二参与者节点的precommit报文发送至第二参与者节点。由于第二参与者节点上运行的分布式应用进程已经被杀死,若第一参与者节点没有出现异常,按照分布式协议在这种异常场景下的预期结果,第二参与者节点不能向协调者节点反馈对应的precommit响应报文(即ack报文),第一参与者节点在接收到协调者节点发送的precommit报文时需要执行“写redo、undo日志、锁定资源、执行操作但不提交”的步骤,并向协调者节点反馈ack报文。若实际结果并非按照预期,比如第二参与者节点仍然反馈了对应的precommit响应报文,或者是反馈了其它错误的报文,或者第一参与者节点没有执行“写redo、undo日志、锁定资源、执行操作但不提交”的步骤,也没有向协调者节点反馈ack报文,则说明图7中依赖于分布式协议的分布式集群不能正常处理构造的这种异常,需要完善基于该分布式协议实现的应用程序。

又比如,在图8中,在第二参与者节点在确认本地构造的异常生效后,获取缓存的协调者节点发送的precommit报文,由于第二参与者节点上运行的分布式应用进程已经被杀死,若第一参与者节点没有出现异常,按照分布式协议在这种异常场景下的预期结果,各分布式节点应当按照分布式协议正常运行,比如,第二参与者节点不能向协调者节点反馈对应的precommit响应报文(即ack报文),第一参与者节点在接收到协调者节点发送的precommit报文时需要执行“写redo、undo日志、锁定资源、执行操作但不提交”的步骤,并向协调者节点反馈ack报文。若实际结果并非按照预期,则说明图8中依赖于分布式协议的分布式集群不能正常处理构造的这种异常,需要完善基于该分布式协议实现的应用程序。

上述分布式协议的异常构造方法,能够有效地构造任意一个异常场景,实现了在某个异常触发时机下准确、可靠地触发异常。在监测到特征报文时,确定特征报文对应的链路,并按照预设的异常触发时机,持续缓存通过该链路传输的网络报文,然后按照预设的演练场景,立即构造符合该异常触发时机的异常,持续缓存通过该链路传输的网络报文可以保证构造的异常能够准确地在预设的异常触发时机生效。当异常生效后,就可以立即解除对网络报文的缓存并传输缓存的网络报文。由于特征报文可以按需设置为任一个基于该分布式协议的网络报文,因此,可以准确、可靠地对该分布式协议构造任一个可能的异常场景,避免了随机构造异常场景重复性很高的问题,大大提高了构造异常的效率。

在一个实施例中,当异常生效后,解除对通过链路传输的网络报文的缓存,并传输缓存的网络报文包括:当异常生效后,解除对通过链路传输的网络报文的缓存;获取本地缓存的待接收的网络报文;或者,向需交互的分布式节点发送本地缓存的待发送的网络报文;方法还包括:通过演练终端获取各分布式节点针对网络报文生成的响应结果;响应结果用于指示演练终端判定各分布式节点上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

具体地,当构造的异常生效后,分布式节点可以解除对通过步骤302中确定的链路传输的网络报文,包括待接收的网络报文和待发送的网络报文。当缓存的网络报文是待接收的网络报文时,则通过本地运行的分布式应用进程获取本地缓存的待接收的网络报文,当缓存的网络报文是待发送的网络报文时,则通过本地运行的分布式应用进程将缓存的网络报文发送至其它需交互的分布式节点,各分布式节点可以生成针对该网络报文的响应结果,演练终端可以根据获取的响应结果判定各分布式节点上基于分布式协议实现的分布式应用进程在构造的演练场景下能够按照预期可靠工作。若不能,则说明分布式应用进程目前不能正常处理构造的异常,若能,则说明分布式应用进程在异常发生时能够正常运行。

在一个实施例中,上述分布式协议的异常构造方法还包括:获取针对异常的撤销指令;根据撤销指令撤销构建的异常;通过演练终端判定基于分布式协议的分布式应用进程在撤销构建的异常后能否正常运行。

由于完整的异常场景的演练过程包括异常构造前、异常生效和异常撤销后,异常撤销后各分布式节点也可能不会按照预期正常运行,为了能够确定对异常撤销后各分布式节上运行的分布式应用进程能否按照预期正常运行,需要撤销各分布式节点上构造的异常。

具体地,分布式节点可以获取针对构造的异常的撤销指令,该撤销指令可以是通知构造异常的另一分布式节点获取的,也可以是从演练终端获取的。分布式节点根据撤销指令撤销本地构造的异常。比如,当构造的异常为“杀死分布式应用进程”时,则分布式节点需要根据获取的撤销指令执行重启分布式应用进程的操作。在撤销构造的异常后,可以通过演练终端获取各个分布式节点上的分布式应用进程在异常撤销后的运行情况,从而判定分布式应用进程在撤销构建的异常后能否按照预期正常运行。

如图9所示,为一个实施例中通过演练终端撤销各个分布式节点上部署本申请所提供的分布式协议的异常构造装置的时序图。参照图9,在异常场景演练结束之后,需要异常演练执行者通过演练终端向各个分布式节点执行撤销分布式协议的异常构造装置的通知,使各个分布式节点恢复到正常状态。需要说明的是,撤销各个分布式节点上的分布式协议的异常构造装置的先后顺序并没有受限制,只需要撤销后各个分布式节点能通过网络正常通信即可。

如图10所示,在一个具体的实施例中,分布式协议的异常构造方法具体包括以下步骤:

s1002,在各个分布式节点上设置网络报文特征、异常触发时机和监测到特征报文时需要构造的演练场景。

s1004,监测基于分布式协议传输的网络报文;从网络报文中确定与预设的网络报文特征匹配的特征报文;根据特征报文中的源地址和目的地址确定对应的链路。

s1006,当预设的异常触发时机为传输报文前触发时,则持续缓存包括特征报文在内的、通过链路传输的网络报文。

s1008,当预设的异常触发时机为传输报文后触发时,则持续缓存不包括特征报文在内的、通过链路传输的网络报文。

s1010,获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;向需交互的分布式节点发送确定的异常对应的构造指令;或者,在本地构造确定的且符合异常触发时机的异常。

s1012,当异常生效后,解除对通过链路传输的网络报文的缓存。

s1014,获取本地缓存的待接收的网络报文;或者,向需交互的分布式节点发送本地缓存的待发送的网络报文。

s1016,通过演练终端获取各分布式节点针对网络报文生成的响应结果;根据响应结果判定各分布式节点上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

s1018,获取针对异常的撤销指令;根据撤销指令撤销构建的异常。

s1020,通过演练终端判定基于分布式协议的分布式应用进程在撤销构建的异常后能否正常运行。

图10为一个实施例中分布式协议的异常构造方法的流程示意图。应该理解的是,虽然图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图11所示,提供了一种分布式协议的异常构造系统1100,包括演练终端1102和分布式节点1104,其中:

分布式节点1104用于当监测到特征报文时,确定特征报文对应的链路;按照通过演练终端1102预设的异常触发时机,持续缓存通过链路传输的网络报文;按照通过演练终端1102预设的演练场景,构造符合异常触发时机的异常;当异常生效后,解除对通过链路传输的网络报文的缓存,并传输缓存的网络报文;

演练终端1102用于获取各分布式节点1104针对网络报文生成的响应结果;根据响应结果判定各分布式节点1104上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

在一个实施例中,分布式节点1104还用于监测基于分布式协议传输的网络报文;从网络报文中确定与预设的网络报文特征匹配的特征报文;根据特征报文中的源地址和目的地址确定对应的链路。

在一个实施例中,分布式节点1104还用于当通过演练终端1102预设的异常触发时机为传输报文前触发时,则持续缓存包括特征报文在内的、通过链路传输的网络报文;当通过演练终端1102预设的异常触发时机为传输报文后触发时,则持续缓存不包括特征报文在内的、通过链路传输的网络报文。

在一个实施例中,分布式节点1104还用于获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;向需交互的分布式节点发送确定的异常对应的构造指令;构造指令用于指示需交互的分布式节点在本地构造确定的且符合异常触发时机的异常。

在一个实施例中,分布式节点1104还用于获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;在本地构造确定的且符合异常触发时机的异常。

在一个实施例中,分布式节点1104还用于当异常生效后,解除对通过链路传输的网络报文的缓存;获取本地缓存的待接收的网络报文;或者,向需交互的分布式节点发送本地缓存的待发送的网络报文;演练终端1102还用于获取各分布式节点1104针对网络报文生成的响应结果;根据响应结果判定各分布式节点上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

在一个实施例中,分布式节点1104还用于获取演练终端1102发送的针对异常的撤销指令;根据撤销指令撤销构建的异常;演练终端1102还用于判定各分布式节点1104上基于分布式协议的分布式应用进程在撤销构建的异常后能否正常运行。

如图12所示,为一个实施例中包括三个分布式节点的分布式协议的异常构造系统的示意图。参照图12,分布式节点分别为宿主机1201、宿主机1202和宿主机1203,异常演练执行者1204可通过演练终端1205,各个分布式节点上运行的分布式应用进程生成的网络报文可通过业务网卡经过报文中转设备1206进行传输,各分布式节点在执行本申请所提供的方法需要相互通信时生成的报文可通过演练网卡进行传输,也就是各分布式节点上的部署的分布式协议的异常构造装置可通过演练网卡进行通信。

上述分布式协议的异常构造系统1100,能够有效地构造任意一个异常场景,实现了在某个异常触发时机下准确、可靠地触发异常。在监测到特征报文时,确定特征报文对应的链路,并按照预设的异常触发时机,持续缓存通过该链路传输的网络报文,然后按照预设的演练场景,立即构造符合该异常触发时机的异常,持续缓存通过该链路传输的网络报文可以保证构造的异常能够准确地在预设的异常触发时机生效。当异常生效后,就可以立即解除对网络报文的缓存并传输缓存的网络报文。由于特征报文可以按需设置为任一个基于该分布式协议的网络报文,因此,可以准确、可靠地对该分布式协议构造任一个可能的异常场景,避免了随机构造异常场景重复性很高的问题,大大提高了构造异常的效率。

在一个实施例中,如图13所示,提供了一种分布式协议的异常构造装置1300,该装置包括网络报文监测模块1302、网络报文缓存模块1304、异常构造模块1306和缓存解除模块1308,其中:

网络报文监测模块1302,用于当监测到特征报文时,确定特征报文对应的链路;

网络报文缓存模块1304,用于按照预设的异常触发时机,持续缓存通过链路传输的网络报文;

异常构造模块1306,用于按照预设的演练场景,构造符合异常触发时机的异常;

缓存解除模块1308,用于当异常生效后,解除对通过链路传输的网络报文的缓存,并传输缓存的网络报文。

在一个实施例中,网络报文监测模块1302还用于监测基于分布式协议传输的网络报文;从网络报文中确定与预设的网络报文特征匹配的特征报文;根据特征报文中的源地址和目的地址确定对应的链路。

在一个实施例中,网络报文缓存模块1304还用于当预设的异常触发时机为传输报文前触发时,则持续缓存包括特征报文在内的、通过链路传输的网络报文;当预设的异常触发时机为传输报文后触发时,则持续缓存不包括特征报文在内的、通过链路传输的网络报文。

在一个实施例中,异常构造模块1306还用于获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;向需交互的分布式节点发送确定的异常对应的构造指令;构造指令用于指示分布式节点在本地构造确定的且符合异常触发时机的异常。

在一个实施例中,异常构造模块1306还用于获取预先设置的与特征报文对应的演练场景;确定在演练场景下所需构造的异常;在本地构造确定的且符合异常触发时机的异常。

在一个实施例中,缓存解除模块1308还用于当异常生效后,解除对通过链路传输的网络报文的缓存;获取本地缓存的待接收的网络报文;或者,向需交互的分布式节点发送本地缓存的待发送的网络报文;分布式协议的异常构造装置1300响应结果分析模块,用于通过演练终端获取各分布式节点针对网络报文生成的响应结果;根据响应结果判定各分布式节点上基于分布式协议的分布式应用进程在演练场景下能否正常运行。

在一个实施例中,分布式协议的异常构造装置1300还包括异常撤销模块,用于获取针对异常的撤销指令;根据撤销指令撤销构建的异常;通过演练终端判定基于分布式协议的分布式应用进程在撤销构建的异常后能否正常运行。

如图14所示,为一个实施中提供的分布式协议的异常构造装置的模块组成示意图。参照图14,包括通信模块1402、网络报文监测模块1302、网络报文缓存模块1304、异常构造模块1306和缓存解除模块1308,其中:

通信模块1402用于与其它分布式节点上基于分布式协议实现的分布式应用进程进行通信,还用于与演练终端进行通信,这样演练终端可通过通信模块1402对网络报文监测模块1302设置网络报文特征,对异常构造模块1306设置要构造的异常。

网络报文监测模块1302用于监测网络报文并与网络报文特征进行匹配,若匹配成功则确定监测到特征报文,则通知网络报文缓存模块1304缓存通过根据特征文本确定的链路传输的网络报文;还用于通知异常构造模块1306按照预设的演练场景,构造符合异常触发时机的异常。

上述分布式协议的异常构造装置1300,能够有效地构造任意一个异常场景,实现了在某个异常触发时机下准确、可靠地触发异常。在监测到特征报文时,确定特征报文对应的链路,并按照预设的异常触发时机,持续缓存通过该链路传输的网络报文,然后按照预设的演练场景,立即构造符合该异常触发时机的异常,持续缓存通过该链路传输的网络报文可以保证构造的异常能够准确地在预设的异常触发时机生效。当异常生效后,就可以立即解除对网络报文的缓存并传输缓存的网络报文。由于特征报文可以按需设置为任一个基于该分布式协议的网络报文,因此,可以准确、可靠地对该分布式协议构造任一个可能的异常场景,避免了随机构造异常场景重复性很高的问题,大大提高了构造异常的效率。

图15示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中分布式集群120所包括的任一分布式节点,比如可以是第一分布式节点120a、第二分布式节点120b或者是第三分布式节点120c。如图15所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现分布式协议的异常构造方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行分布式协议的异常构造方法。

本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的分布式协议的异常构造装置可以实现为一种计算机程序的形式,计算机程序可在如图15所示的计算机设备上运行。计算机设备的存储器中可存储组成该分布式协议的异常构造装置的各个程序模块,比如,图13所示的网络报文监测模块1302、网络报文缓存模块1304、异常构造模块1306和缓存解除模块1308。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的分布式协议的异常构造方法中的步骤。

例如,图15所示的计算机设备可以通过如图13所示的分布式协议的异常构造装置中的网络报文监测模块1302执行步骤s302。计算机设备可通过网络报文缓存模块1304执行步骤s304。计算机设备可通过异常构造模块1306执行步骤s306。计算机设备可通过缓存解除模块1308执行步骤s308。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述分布式协议的异常构造方法的步骤。此处分布式协议的异常构造方法的步骤可以是上述各个实施例的分布式协议的异常构造方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述分布式协议的异常构造方法的步骤。此处分布式协议的异常构造方法的步骤可以是上述各个实施例的分布式协议的异常构造方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1