分布式集群的可靠性的测试系统、方法和装置与流程

文档序号:12041511阅读:220来源:国知局
分布式集群的可靠性的测试系统、方法和装置与流程
本发明涉及网络搜索技术领域,尤其涉及一种分布式集群的可靠性的测试系统、方法和装置。

背景技术:
对于类似网络搜索引擎的分布式集群系统,在分布式集群的可靠性测试中,现有技术通常以模块为单位进行测试,通过修改模块代码或相应的中转工具来完成分布式系统的可靠性测试,现有技术存在的问题是:(1)无法获知单个模块可靠性变化对分布式集群系统的可靠性影响;(2)对分布式集群中的负载均衡和调度无能为力,即无法针对整个分布式集群的可靠性进行测试;(3)如果数据出现扰动(fuzzy),只是针对单个模块,这种模块数据出现混乱的现象对分布式集群的影响无法感知;(4)依赖于被测对象的代码质量。现有技术的已经无法满足业务需求,亟待可以从整个分布式集群的角度进行测试验证集群可靠性的方法或系统等,其中现在主要解决的分布式集群的可靠性测试及验证主要包括几个方面:(1)通信信道独立失效及恢复;(2)远端节点独立失效及恢复;(3)通信连接异常;(4)消息传输异常,例如丢失、延时、错包等;(5)负载均衡;(6)集群调度;(7)消息时序;(8)数据不一致;(9)异常发生时机控制。

技术实现要素:
本发明旨在至少解决上述技术问题之一。为此,本发明的第一个目的在于提出一种可以显著提高分布式集群的测试效率、通用性好、性价比高的分布式集群的可靠性的测试系统。本发明的第二个目的在于提出一种网桥。本发明的第三个目的在于提出一种分布式集群的可靠性的测试方法。为了实现上述目的,根据本发明的第一方面实施例的分布式集群的可靠性的测试系统包括:上游搜索模块,所述上游搜索模块用于发送压力请求数据包,其中所述压力请求数据包中包括多个查询词或特定字段;网桥,所述网桥与所述上游搜索模块相连,用于根据预设的控制指令对所述压力请求数据包中的查询词或特定字段进行匹配,并对匹配后的查询词或特定字段在套接字socket进行动作处理,以及所述网桥根据所述控制指令选择性地将所述压力请求数据包发送至多个下游搜索模块;以及下游集群,所述下游集群包括多个下游搜索模块,所述多个下游搜索模块分别与所述网桥相连,用于接收所述网桥发送的压力请求数据包,并根据所述压力请求数据包返回相应的数据包。根据本发明实施例的分布式集群的可靠性的测试系统,网桥分别与上游搜索模块和多个下游搜索模块(下游集群)相连,通过网桥接管了上游搜索模块和下游集群的通信链路,并通过对这些链路进行控制,实现了上下游之间的可靠性测试,填补了分布式集群测试中的空白,显著提高了分布式集群的测试效率,并且通用性好、性价比高。为了实现上述目的,根据本发明的第二方面实施例的网桥包括:接收模块,所述接收模块用于接收上游搜索模块发送的压力请求数据包,其中所述压力请求数据包中包括多个查询词或特定字段;匹配模块,所述匹配模块用于根据预设的控制指令对所述压力请求数据包中的查询词或特定字段进行匹配;处理模块,所述处理模块用于对匹配后的查询词或特定字段在套接字socket进行动作处理;以及发送模块,所述发送模块用于根据所述控制指令选择性地将所述压力请求数据包发送至多个下游搜索模块。为了实现上述目的,根据本发明第三方面实施例的网桥包括:接收模块,所述接收模块用于接收上游搜索模块发送的压力请求数据包;处理模块,所述处理模块用于根据所述压力请求数据包执行预定的动作;以及发送模块,所述发送模块用于根据预设的控制指令选择性地将所述压力请求数据包发送至多个下游搜索模块。根据本发明实施例的网桥,通过接管上游搜索模块和多个下游搜索模块的通信链路,并通过对这些链路进行控制,可以实现上下游之间的可靠性测试,显著提高分布式集群的测试效率,并且通用性好,性价比高。为了实现上述目的,根据本发明的第四方面实施例的分布式集群的可靠性的测试方法,包括以下步骤:(a)网桥接收上游搜索模块发送的压力请求数据包,所述压力请求数据包中包括多个查询词或特定字段;(b)所述网桥根据预设的控制指令对所述压力请求中的查询词或特定字段进行匹配;(c)所述网桥对匹配后的查询词或特定字段在套接字socket进行动作处理,并根据所述控制指令选择性地将所述压力请求数据包转发给下游搜索模块;以及(d)当所述下游搜索模块接收到所述压力请求数据包时,所述下游搜索模块根据所述压力请求数据包返回相应的数据包至所述网桥。为了实现上述目的,根据本发明第五方面实施例的分布式集群的可靠性的测试方法,包括以下步骤:(a)网桥接收上游搜索模块发送的压力请求数据包;(b)所述网桥根据所述压力请求数据包执行用户通过命令预定的动作;(c)所述网桥根据预设的控制指令选择性地将所述压力请求数据包发送至多个下游搜索模块;以及(d)当所述下游搜索模块接收到所述压力请求数据包时,所述下游搜索模块根据所述压力请求数据包返回相应的数据包至所述网桥。根据本发明实施例的分布式集群的可靠性的测试方法,网桥分别与上游搜索模块和多个下游搜索模块(下游集群)相连,通过网桥接管了上游搜索模块和下游集群的通信链路,并通过对这些链路进行控制,实现了上下游之间的可靠性测试,填补了分布式集群测试中的空白,显著提高了分布式集群的测试效率,并且通用性好。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,图1是根据本发明一个实施例的分布式集群的可靠性的测试系统的结构框图;图2是根据本发明一个实施例的分布式集群的可靠性的测试系统的结构框图;图3是根据本发明一个实施例的网桥的结构框图;图4是根据本发明一个实施例的网桥的结构框图;图5是根据本发明一个实施例的网桥的结构框图;图6是根据本发明一个实施例的分布式集群的可靠性的测试方法的流程图;图7是根据本发明一个实施例的分布式集群的可靠性的测试方法的流程图;以及图8是根据本发明一个实施例的分布式集群的可靠性的测试方法的流程图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。下面参考说明书附图描述根据本发明实施例的分布式集群的可靠性的测试系统。一种分布式集群的可靠性的测试系统,包括:上游搜索模块,所述上游搜索模块用于发送压力请求数据包,其中压力请求数据包中包括多个查询词或特定字段;网桥,与上游搜索模块相连,用于根据预设的控制指令对压力请求数据包中的查询词或特定字段进行匹配,并对匹配后的查询词或特定字段在socket(套接字)进行动作处理,以及根据控制指令选择性地将压力请求数据包发送至多个下游搜索模块;以及下游集群,下游集群包括多个下游搜索模块,多个下游搜索模块分别与网桥相连,用于接收网桥发送的压力请求数据包,并根据压力请求数据包返回相应的数据包。图1为本发明一个实施例的分布式集群的可靠性的测试系统的结构框图。如图1所示,根据本发明实施例的分布式集群的可靠性的测试系统,包括上游搜索模块110、网桥120和下游集群130,其中,下游集群包括多个下游搜索模块131,网桥120分别与上游搜索模块110和多个下游搜索模块131相连。具体地,上游搜索模块110用于发送压力请求数据包,其中压力请求数据包中包括多个查询词或特定字段。网桥120用于根据预定的控制指令对压力请求数据包中的查询词或特定字段进行匹配,并对匹配后的查询词或特定字段都在socket进行动作处理,以及根据控制指令选择性地将压力请求数据包发送至多个下游搜索模块131。在本发明的一个实施例中,对于某一条上游搜索模块110和网桥120之间的链路可以设置一个控制指令,该控制指令包括匹配规则和执行动作。具体地,在本发明的一个实施例中,控制指令的匹配规则包括如下的几种:匹配规则1:得到特定查询(query)词,当匹配到特定查询(query)词时,进行后续的执行动作(action)。匹配规则2:数据包中匹配特殊字段,当数据包中包括特定字段时,进行后续的执行动作(action)。在本发明的一个实施例中,控制指令的执行动作如下表1所示。应理解,表1仅为示意性的例子,不用于限制本发明的保护范围。本领域的技术人员可根据实际需要设置不同的控制命令和匹配动作,这些均应包含在本发明的保护范围内。表1控制指令的执行动作表应理解,上述所有的执行动作有的是可以共存的,有的需要互斥。可以共存的执行动作也就是匹配多种场景,但是控制不同维度的动作。由此,通过控制指令可以构造出一条链路中的不同运行场景。在本发明的一个实施例中,控制指令的命令行及参数具体如下:--match,匹配策略,默认值:0;--control,0:观测内部状态,1:测试逻辑动作注入;--times,默认值:0不控制,-1永久性控制,>0控制前times次转发;--omit,默认值:0不跳过控制,>0前面omit次不受控制;--links,默认:对所有链路有效,=0,1,2:对指定编号的链路有效;--server,注入的测试逻辑编号,控制上游socket的读写;--client,注入的测试逻辑编号,控制下游socket的读写;--srand/--crand,range(0,1),控制逻辑触发的概率;--stime/--ctime,单位:ms,超时控制逻辑指定的超时时间。根据上述实施例,网桥120还可以包括监听端口(图中未示出),监听端口用于接收用户输入的控制指令。根据本发明实施例的分布式集群的可靠性的测试系统,网桥分别与上游搜索模块和多个下游搜索模块(下游集群)相连,通过网桥接管了上游搜索模块和下游集群的通信链路,并通过对这些链路进行控制,实现了上下游之间的可靠性测试,填补了分布式集群测试中的空白,显著提高了分布式集群的测试效率,并且通用性好、性价比高。此外,由于整个下游集群的链路已经被接管起来,socket的所有通信全部在监控之中,所以对集群内节点通信的监控就非常容易。由此,在本发明的一个实施例中,网桥120还可以用于根据下游集群130和上游搜索模块110之间的通信数据包监控下游集群130和上游搜索模块110的通信状态。监控的内容可以包括:整个集群包括了多少条链路;每条链路上建立了多少个socket连接;每条链路上传输了多少数据,包括读和写两个方面;每条链路的数据传输次数,包括入次数和出次数;每条链路上socket异常种类和次数,包括超时、多次写和断连接等。根据本发明实施例的测试系统,上述集群运行信息全部由网桥获取,不再需要去集群中各个机器上进行数据统计,非常便利,节省大量时间。图2为本发明一个实施例的分布式集群的可靠性的测试系统的结构框图。如图2所示,在图1所示的实施例的基础上,该测试系统还包括监控平台140。监控平台140与网桥120相连,用于接收用户的测试指令,并将测试指令发送至网桥以使得网桥根据用户的测试指令发送相应的运行信息至监控平台。例如,测试集群的负载均衡,只需要向网桥120发送一条命令,就能很快地得到各个节点的负载情况。在上述实施例中,网桥120接收到压力请求包后首先进行匹配再执行相应的动作。应理解,在其他实施例中,网桥120也可以完全不匹配,针对所有的压力请求均执行相同的预定动作。下面参考说明书附图描述根据本发明实施例的网桥。图3为本发明一个实施例的网桥的结构框图。如图3所示,根据本发明实施例的网桥包括接收模块210、匹配模块220、处理模块230和发送模块240。具体地,接收模块210用于接收上游搜索模块发送的压力请求数据包,其中压力请求数据包中包括多个查询词或特定字段。匹配模块220与接收模块210相连,用于根据预设的控制指令对压力请求数据包中的查询词或特定字段进行匹配。处理模块230与匹配模块220相连,用于对匹配后的查询词在套接字socket进行动作处理。发送模块240用于根据控制指令选择性地将压力请求数据包发送至多个下游搜索模块。在本发明的一个实施例中,对于某一条上游搜索模块和网桥之间的链路可以设置一个控制指令,该控制指令包括匹配规则和执行动作。每个匹配规则可以包括多个执行动作。多个执行动作匹配多种场景,但是控制不同维度的动作。由此,通过控制指令可以构造出一条链路中的不同运行场景。在本发明的一个实施例中,网桥还可包括监听端口(图中未示出),用于接收用户输入的控制指令。根据本发明实施例的网桥,通过接管上游搜索模块和多个下游搜索模块的通信链路,并通过对这些链路进行控制,可以实现上下游之间的可靠性测试,显著提高分布式集群的测试效率,并且通用性好,性价比高。图4为本发明另一个实施例的网桥的结构框图。如图4所示,在图3所示的实施例的基础上,该网桥还包括监控模块250。监控模块250用于根据socket监控由多个下游搜索模块组成的下游集群和上游搜索模块之间的通信相关信息。在本发明的一个实施例中,监控的内容可以包括:整个集群包括了多少条链路;每条链路上建立了多少个socket连接;每条链路上传输了多少数据,包括读和写两个方面;每条链路的数据传输次数,包括入次数和出次数;每条链路上socket异常种类和次数,包括超时、多次写和断连接等。根据本发明实施例的网桥,集群的运行信息全部由网桥获取,不再需要去集群中各个机器上进行数据统计,非常便利,节省大量时间。例如:测试集群的负载均衡,只需要向监控模块250发送一条测试指令,就能很快地得到各个节点的负载情况。在上面的实施例中,网桥在接收到上游搜索模块发送的压力请求数据包后首先进行匹配再执行相应的动作。而在其他实施例中,网桥可以完全不进行不匹配,针对所有的压力请求执行预定的动作。由此,本发明还提出另一种网桥。图5为本发明一个实施例的网桥的结构框图。如图5所示,根据本发明另一个实施例的网桥包括接收模块210’、处理模块220’和发送模块230’。具体地,接收模块210’用于接收上游搜索模块发送的压力请求数据包。处理模块220’用于根据压力请求数据包执行预定的动作。发送模块230’用于根据预设的控制指令选择性地将压力请求数据包发送至多个下游搜索模块。根据本发明实施例的网桥,通过接管上游搜索模块和多个下游搜索模块的通信链路,并通过对这些链路进行控制,可以实现上下游之间的可靠性测试,显著提高分布式集群的测试效率,并且通用性好,性价比高。下面参考说明书附图描述根据本发明实施例的分布式集群的可靠性的测试方法。图6为本发明一个实施例的分布式集群的可靠性的测试方法的流程图。如图6所示,根据本发明实施例的分布式集群的可靠性的测试方法,包括下述步骤。步骤S101,网桥接收上游搜索模块发送的压力请求数据包。其中,压力请求数据包中包括多个查询词或特定字段。由此,网桥可以根据接收到的压力请求数据包执行相应的动作。步骤S102,网桥根据预设的控制指令对压力请求数据包中的查询词或特定字段进行匹配。步骤S103,网桥对匹配后的查询词在socket进行动作处理,并根据控制指令选择性地将压力请求数据包转发给下游搜索模块。在本发明的一个实施例中,对于某一条上游搜索模块和网桥之间的链路可以设置一个控制指令,该控制指令包括匹配规则和执行动作。具体地,在本发明的一个实施例中,控制指令的匹配规则包括如下的几种:匹配规则1:得到特定查询(query)词,当匹配到特定查询(query)词时,进行后续的执行动作(action)。匹配规则2:数据包中匹配特殊字段,当数据包中包括特定字段时,进行后续的执行动作(action)。控制指令的执行动作可参考上述表1。同样地,所有的执行动作有的是可以共存的,有的需要互斥。可以共存的执行动作也就是匹配多种场景,但是控制不同维度的动作。由此,通过控制指令可以构造出一条链路中的不同运行场景。在本发明的一个实施例中,控制指令的命令行及参数具体如下:--match,匹配策略,默认值:0;--control,0:观测内部状态,1:测试逻辑动作注入;--times,默认值:0不控制,-1永久性控制,>0控制前times次转发;--omit,默认值:0不跳过控制,>0前面omit次不受控制;--links,默认:对所有链路有效,=0,1,2:对指定编号的链路有效;--server,注入的测试逻辑编号,控制上游socket的读写;--client,注入的测试逻辑编号,控制下游socket的读写;--srand/--crand,range(0,1),控制逻辑触发的概率;--stime/--ctime,单位:ms,超时控制逻辑指定的超时时间。步骤S104,当下游搜索模块接收到压力请求数据包时,根据压力请求数据包返回相应的数据包至网桥。根据本发明实施例的分布式集群的可靠性的测试方法,网桥分别与上游搜索模块和多个下游搜索模块(下游集群)相连,通过网桥接管了上游搜索模块和下游集群的通信链路,并通过对这些链路进行控制,实现了上下游之间的可靠性测试,填补了分布式集群测试中的空白,显著提高了分布式集群的测试效率,并且通用性好。图7为本发明一个实施例的分布式集群的可靠性的测试方法的流程图。如图7所示,该方法包括下述步骤。步骤S201,网桥接收上游搜索模块发送的压力请求数据包。步骤S202,网桥根据预设的控制指令对压力请求数据包中的查询词或特定字段进行匹配。步骤S203,网桥对匹配后的查询词在socket进行动作处理,并根据控制指令选择性地将压力请求数据包转发给下游搜索模块。步骤S204,当下游搜索模块接收到压力请求数据包时,根据压力请求数据包返回相应的数据包至网桥。上述步骤S201至步骤S204的实现过程与步骤S101至步骤S104的实现过程相同,此处不再赘述。步骤S205,网桥根据下游集群和上游搜索模块之间的通信数据包监控下游集群和上游搜索模块之间的通信相关信息。在本发明的一个实施例中,监控的内容可以包括:整个集群包括了多少条链路;每条链路上建立了多少个socket连接;每条链路上传输了多少数据,包括读和写两个方面;每条链路的数据传输次数,包括入次数和出次数;每条链路上socket异常种类和次数,包括超时、多次写和断连接等。例如,测试集群的负载均衡,只需要向网桥发送一条测试命令,就能很快地得到各个节点的负载情况。根据本发明实施例的分布式集群的可靠性的测试方法,通过网桥可以方便地获取集群的运行信息,不再需要去集群中各个机器上进行数据统计,非常便利,节省大量时间。在上述实施例中,网桥接收到压力请求包后首先进行匹配再执行相应的动作。应理解,在其他实施例中,网桥也可以完全不匹配,针对所有的压力请求均执行相同的预定动作。由此,本发明还提出另一种分布式集群的可靠性的测试方法。图8是本发明一个实施例的分布式集群的可靠性的测试方法的流程图。如图8所示,该方法包括下述步骤。步骤S301,网桥接收上游搜索模块发送的压力请求数据包。步骤S302,网桥根据压力请求数据包执行预定的动作。在本发明的一个实施例中,网桥完全不执行匹配的过程,针对所有的压力请求均执行相同的预定动作。步骤S303,网桥根据预设的控制指令选择性地将压力请求数据包发送至多个下游搜索模块。步骤S304,当下游搜索模块接收到压力请求数据包时,根据压力请求数据包返回相应的数据包至网桥。综上,根据本发明实施例的分布式集群的可靠性的测试系统及方法和网桥,至少具有以下有益效果:(一)填补分布式集群测试的空白,主要表现在以下三个方面:1、可以支撑针对分布式集群中的通信信道独立失效及恢复、远端节点独立失效及恢复、通信连接异常、数据传输异常(丢失、延时、错包等)、连接异常等故障植入等分布式集群的可靠性验证。2、针对异步分布式系统测试中的消息时序控制和故障发生时机控制。3、针对分布式集群数据不一致的构造,建立低成本的解决方案。(二)显著提高分布式集群的测试效率,主要表现在以下两个方面:1、集群负载均衡测试效率提升,如果采用现有技术的测试方法,可能要在模块代码中插桩加入打印日志信息,然后后续还要分析日志来查看负载均衡情况。使用网桥不需要进行代码修改,直接从网桥可以分布式集群的负载均衡情况。大大降低负载均衡测试成本,节省大量时间。例如:进过实验表明,在大度项目中,可以方便地从网桥中得到最大5.8%的访问量波动和8.5%的数据读取量波动。2、集群调度测试中的故障模拟效率提升在集群调度测试中,连接断开、加层减列等测试场景,需要通过复位相应的模块来实现,重启恢复时间长,通过网桥命令行控制模拟,经过实验,恢复时间在秒级,大大提高测试执行效率,便于自动化。(三)提升通用性,主要表现在以下四个方面:1、无需修改被测对象代码,能够快速移植使用;2、如需针对通信协议、业务数据处理进行必要的适配,可以通过预留的扩展接口快速完成;3、故障植入的测试逻辑,可以通过“匹配规则+执行动作”模式的预留扩展接口灵活定义;4、适用于同步和异步的被测集群系统,对于异步系统的关键测试需求有较好的支持。(四)性价比高,主要体现在以下三个方面:1、无需修改被测对象代码就可以满足分布式集群可靠性测试的大部分关键测试需求,特别是针对相同的被测对象,随着软件等程序的升级,维护成本基本为0;2、故障植入模拟的代价低、执行效率高,彻底改变了在大压力盲测下苦等故障概率性出现的局面,高效率、准确地测试程序、集群的相关容错能力;3、中控模式构造复杂测试场景并统计分析全局数据,方便支持测试自动化。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1