本发明涉及测试数据传输领域,尤其是一种节点对等的集群分布式测试框架和方法。
背景技术:
IOZONE是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。
SANERGY是一种存储共享、带宽测试软件。
IOPS(Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。
ZeroMQ(以下ZeroMQ简称ZMQ)是一个通用的消息层,其中Zero意味着零延时,也被定义为“史上最快的消息队列”。ZeroMQ提供3种基本通讯模式:Request-Reply、Publish-Subscribe、Parallel Pipeline。使用ZeroMQ可以方便、快速的构建分布式架构。
随着集群中主机数量的递增,以及主机分布式布局中方位的不确定,原有的使用脚本同步集群中所有主机测试任务的测试方法暴露出繁琐、效率低等弊端。如果主机数量过多,执行完测试任务后仍旧单次只能查看单个主机的测试结果,不利于对集群整体性能进行分析、评估、优化。
技术实现要素:
为了解决上述技术问题,本发明的目的是提供一种节点对等的集群分布式测试框架和方法,解决了集群中节点数量增多以及节点分布式布局中方位不确定,而导致同步集群中所有节点的测试任务繁琐,以及测试任务执行完成后无法同时查看集群中所有节点的测试结果的问题。
本发明所采用的技术方案是:一种节点对等的集群分布式测试框架,所述集群分布式测试框架包括至少一个测试任务发送者节点、若干个测试任务接收者节点、若干个测试结果发送者节点和至少一个测试结果收集者节点,所有节点通过网络连接,每个节点基于ZMQ_DEALER套接字以发送测试任务到对端节点,每个节点基于ZMQ_ROUTER套接字以接收对端节点发送的测试任务,测试结果发送者节点基于ZMQ_PUB套接字以发送测试结果到测试结果收集者节点,测试结果收集者节点设置ZMQ_SUB套接字以收集测试结果发送者节点发送的测试结果。
本发明所采用的另一技术方案是:一种节点对等的集群分布式测试方法,应用于所述的节点对等的集群分布式测试框架,包括以下步骤:
S1、启动所有的节点,每个节点创建一个ZMQ_ROUTER套接字并绑定以接收消息;
S2、每个节点通过网络发现集群中的其他节点,每发现一个节点即创建一个ZMQ_DEALER套接字与发现的节点的ZMQ_ROUTER套接字连接;
S3、判断节点是否为测试任务发送者节点,若是,所述节点通过多个ZMQ_DEALER套接字分别向多个对端节点发送测试任务,执行测试任务并存储测试结果;否则,所述节点通过ZMQ_ROUTER套接字接收测试任务,执行测试任务并存储测试结果;
S4、判断节点是否为测试结果发送者节点,若是,所述节点创建ZMQ_PUB套接字,并通过ZMQ_PUB套接字与ZMQ_SUB套接字连接以发送测试结果;否则,所述节点创建ZMQ_SUB套接字,通过ZMQ_SUB套接字接收测试结果。
进一步地,所述步骤S2与步骤S3之间还包括步骤:
每个节点间隔预定时间检测对端节点是否离开,若离开,则关闭离开的对端节点对应的ZMQ_DEALER套接字。
进一步地,所述步骤S2中节点创建ZMQ_DEALER套接字后,设置ZMQ_DEALER套接字的属性为所述节点的识别信息;通过ZMQ_ROUTER套接字连接上对端节点后,将所述节点的识别信息和地址信息发送至对端节点。
进一步地,所述步骤S4中,所述节点创建ZMQ_SUB套接字,设置订阅过滤并绑定ZMQ_SUB套接字,通过ZMQ_SUB套接字接收ZMQ_PUB套接字发送的测试结果。
进一步地,所述节点执行测试任务后将测试结果进行加密并存储,所述节点接收测试结果后进行加密并存储。
进一步地,所述每个节点通过网络发现集群中的其他节点的方法包括广播UDP包或Gossip发现协议。
进一步地,所述执行测试任务的测试工具包括IOZONE或SANERGY。
进一步地,所述测试结果包括读速度、写速度、IOPS、访问延时、丢帧数的任意组合。
进一步地,所述测试任务包括文件IO操作。
本发明的有益效果是:本发明一种节点对等的集群分布式测试框架和方法,该框架充分利用分布式的特点,去中心化,集群中每一个节点既是测试任务的发布者,也是测试任务的接收执行者;既是测试结果的发送者,也是测试结果的收集存储者;通过该框架集群中所有节点可以同步执行相同的测试任务;如果集群中一个节点瘫痪,可以选择其他节点发布测试任务或收集测试结果,不会影响整个集群的测试,提高了测试的可靠性;本框架中各部分都采用ZeroMQ Msg对数据进行编码,结合其PUB-SUB模式、ROUTER/DEALER套接字,充分利用ZeroMQ高效的传输性能,构建一个高效、可靠的节点对等的分布式测试框架,提供了一种高效、可靠的节点对等的分布式测试方法。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是本发明中一种节点对等的集群分布式测试框架的数据传输示意图;
图2是本发明中一种节点对等的集群分布式测试方法的步骤流程图;
图3是本发明中一种节点对等的集群分布式测试方法的一具体实施例步骤流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
一种节点对等的集群分布式测试框架,集群分布式测试框架包括至少一个测试任务发送者节点、若干个测试任务接收者节点、若干个测试结果发送者节点和至少一个测试结果收集者节点,所有节点通过网络连接,参考图1,图1是本发明中一种节点对等的集群分布式测试框架的数据传输示意图,所有节点互连采用ZeroMQ技术中的ROUTER/DEALER套接字,每个节点基于ZMQ_DEALER套接字以发送测试任务到对端节点,每个节点基于ZMQ_ROUTER套接字以接收对端节点发送的测试任务,测试结果收集采用ZeroMQ技术中的PUB-SUB模式,测试结果发送者节点基于ZMQ_PUB套接字以发送测试结果到测试结果收集者节点,如图1中的节点1和节点2,测试结果收集者节点设置ZMQ_SUB套接字以收集测试结果发送者节点发送的测试结果,如图1中的节点N。另外,多个节点之间可以通过局域网络或者广域网络建立网络连接。
一种节点对等的集群分布式测试框架,该框架充分利用分布式的特点,去中心化,集群中每一个节点既是测试任务的发布者,也是测试任务的接收执行者;既是测试结果的发送者,也是测试结果的收集存储者。
一种节点对等的集群分布式测试方法,应用于所述的节点对等的集群分布式测试框架,参考图2和图3,图2是本发明中一种节点对等的集群分布式测试方法的步骤流程图,图3是本发明中一种节点对等的集群分布式测试方法的一具体实施例步骤流程图,图3示意的是单个节点的数据传输情况,节点对等的集群分布式测试方法包括以下步骤:
S1、启动所有的节点,每个节点创建一个ZMQ_ROUTER套接字并绑定以接收消息;
S2、每个节点通过网络发现集群中的其他节点,每发现一个节点即创建一个ZMQ_DEALER套接字与发现的节点的ZMQ_ROUTER套接字连接,每一个对端节点对应一个ZMQ_DEALER套接字,以实现扇出数据到多个对端节点;进一步地,每个节点通过网络发现集群中的其他节点的方法包括广播UDP包或Gossip发现协议;步骤S2中节点创建ZMQ_DEALER套接字后,设置ZMQ_DEALER套接字的属性为节点的唯一的识别信息;通过ZMQ_ROUTER套接字连接上对端节点后,将节点的识别信息和地址信息发送至对端节点,以便对端节点能够回连至该节点。本实施例中,本发明中的节点即为主机,节点的识别信息为节点的UUID码,也可以是其他的固定不变可唯一识别节点的信息;
作为技术方案的进一步改进,每个节点间隔预定时间检测对端节点是否离开,若离开,则关闭离开的对端节点对应的ZMQ_DEALER套接字;具体地,检测对端节点是否离开的方法包括Ping-Pong方式的心跳检测;
S3、判断节点是否为测试任务发送者节点,若是,节点通过多个ZMQ_DEALER套接字分别向多个对端节点发送测试任务,根据ZMQ_ROUTER套接字的特性,对端节点可得到发送此消息节点的UUID码,执行测试任务并加密存储测试结果;否则,节点通过ZMQ_ROUTER套接字接收测试任务,执行测试任务并加密存储测试结果;进一步地,执行测试任务的测试工具包括IOZONE或SANERGY;测试结果包括读速度、写速度、IOPS、访问延时、丢帧数的任意组合;
S4、判断节点是否为测试结果发送者节点,若是,节点创建ZMQ_PUB套接字,并通过ZMQ_PUB套接字与ZMQ_SUB套接字连接以发送测试结果,其中,ZMQ_PUB套接字以扇出的方式用于发送数据;否则,节点创建ZMQ_SUB套接字,通过ZMQ_SUB套接字接收测试结果,加密并存储,并由分析程序做进一步分析。进一步地,步骤S4中,节点创建ZMQ_SUB套接字,设置订阅过滤并绑定ZMQ_SUB套接字,通过ZMQ_SUB套接字接收ZMQ_PUB套接字发送的测试结果,各节点的测试结果交叉到达,互不影响。最后,结束数据传输,关闭所有套接字。
由于ZeroMQ技术的跨平台、可移植性,本发明对操作系统不做限制。ZeroMQ可以被大多数语言进行调用,包括C、C++、C#、Clojure、CL、Erlang、F#、Felix、Go、Haskell、Java、Lua、Node.js、Objective-C、Perl、PHP、Python、Ruby、Scala、Tcl、Ada、Basic、Haxe、ooc。
通过本发明的集群中所有节点可以同步执行相同的测试任务;如果集群中一个节点瘫痪,可以选择其他节点发布测试任务或收集测试结果,不会影响整个集群的测试,提高了测试的可靠性;本框架中各部分都采用ZeroMQ Msg对数据进行编码,结合其PUB-SUB模式、ROUTER/DEALER套接字,充分利用ZeroMQ高效的传输性能,构建一个高效、可靠的节点对等的分布式测试框架,提供了一种高效、可靠的节点对等的分布式测试方法。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。