掌桥专利:专业的专利平台
掌桥专利
首页

流量检测系统、方法及存储介质

文献发布时间:2023-06-19 09:58:59


流量检测系统、方法及存储介质

技术领域

本申请涉及互联网技术领域,尤其涉及一种流量检测系统、方法及存储介质。

背景技术

在互联网技术领域中,域名系统(Domain Name System,DNS)服务器在同一时刻内为互联网用户提供DNS解析查询服务数量的多少称为每秒查询数(Query Per Second,QPS),该QPS也用来衡量向DNS服务器发送DNS查询请求的模拟服务器的性能。

为了实现灵活的QPS DNS的查询,在现有技术中,一般一台模拟服务器在接收到流量模拟任务后,根据需要模拟的QPS,计算出周期值,然后启动线程池,向目标DNS服务器周期性的发起DNS查询请求。

然而,这种域名查询方法,需要模拟的QPS容量一般不能超过模拟服务器容量极限,当超过模拟服务器容量极限时,并不能有效的衡量向DNS服务器发送DNS查询请求的模拟服务器的性能。

发明内容

本申请实施例提供一种流量检测系统、方法及存储介质,以解决存在大容量每秒查询率(Query Per Second,QPS)时,单个模拟服务器无法满足查询模拟需求的问题。

第一方面,本申请实施例提供一种流量检测系统,包括:相互连接的控制子系统、中间件和模拟器集群;

所述模拟器集群包括:至少两台模拟服务器,每台模拟服务器还与所述控制子系统连接,用于向所述控制子系统发送各自的状态信息;

所述控制子系统用于根据每个模拟服务器的状态信息,通过所述中间件向所述模拟器集群中的至少一个可用模拟服务器发送流量查询请求;

所述至少一个可用模拟服务器还用于根据接收到的流量查询请求,通过与目标域名系统服务器通信,检测所述流量检测系统的性能。

在第一方面的一种可能设计中,所述控制子系统包括:用户交互界面、检测模块与分配模块;

所述用户交互界面用于获取外界发起的流量模拟任务;

所述检测模块用于检测所述模拟器集群中每台模拟服务器的状态信息,确定出所述模拟器集群中的至少一个可用模拟服务器;

所述分配模块用于根据所述流量模拟任务,通过所述中间件向每个可用模拟服务器分发流量查询请求。

在第一方面的另一种可能的设计中,每个可用模拟服务器具体用于监听流量查询请求队列,根据接收到的每个流量查询请求中的流量值,确定出查询周期,根据所述查询周期向目标域名系统服务器发送流量查询请求。

第二方面,本申请实施例提供一种流量检测方法,包括:

接收外界发出的流量模拟任务,所述流量模拟任务包括:目标流量值;

根据模拟器集群中的每台模拟服务器的状态信息,确定所述模拟器集群中的至少一台可用模拟服务器;

根据所述可用模拟服务器的数量,对所述目标流量值进行划分,得到至少一份流量值,所述流量值的份数与所述可用模拟服务器的数量一致;

向至少一台可用模拟服务器分别发送流量查询请求,每台可用模拟服务器用于根据接收到的流量查询请求,通过与目标域名系统服务器通信,检测流量检测系统的性能。

在第二方面的一种可能设计中,每台模拟服务器的状态信息是所述模拟器集群中每台模拟服务器的周期性同步信息,所述周期性同步信息包括:模拟服务器的负载信息和资源使用信息。

作为一种示例,所述根据模拟器集群中的各台模拟服务器的状态信息,确定所述模拟器集群中的至少一台可用模拟服务器,包括:

在所述模拟器集群中,确定出发出周期性同步信息的至少一个候选模拟服务器;

根据所述至少一个候选模拟服务器的负载信息、资源使用信息,确定所述模拟器集群中的至少一台可用模拟服务器。

作为另一种示例,所述根据所述可用模拟服务器的数量,对所述目标流量值进行划分,得到至少一份流量值,包括:

根据所述模拟器集群中可用模拟服务器的数量,对所述目标流量值进行均分,得到流量值相等的至少一份流量值。

在第二方面的另一种可能设计中,所述向至少一台可用模拟服务器分别发送流量查询请求,包括:

通过中间件向每个可用模拟服务器分发流量查询请求。

在第二方面的又一种可能设计中,所述方法还包括:

接收所述至少一个可用模拟服务器发送的流量查询响应,所述流量查询响应包括:所述目标域名系统服务器的每秒查询数;

根据所有可用模拟服务器发送的流量查询响应,确定所述流量检测系统的性能。

第三方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行第二方面以及各可能设计所述的方法。

本申请实施例提供一种流量检测系统、方法及存储介质,该系统包括相互连接的控制子系统、中间件和模拟器集群,每个模拟器集群均包括至少两台模拟服务器,用于向控制子系统发送各自的状态信息,控制子系统根据状态信息,通过中间件向模拟器集群中的至少一个可用模拟服务器发送流量查询请求,该可用的模拟服务器根据接收到的流量查询请求,与目标域名系统服务器通信,检测流量检测系统的性能。通过控制子系统与模拟器集群协同工作,实现了灵活分配大容量流量查询请求,以及检测系统性能的检测。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,符合本申请公开的实施例,并与说明书一起用于解释本申请公开的原理。

图1为本申请实施例提供的流量检测系统的结构示意图;

图2为本申请实施例提供的控制子系统的结构示意图;

图3为本申请实施例一提供的流量检测方法流程图;

图4为本申请实施例二提供的流量检测方法流程图;

图5为本申请实施例三提供的流量检测方法流程图。

通过上述附图,已示出本申请公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请公开的概念。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

首先对本申请实施例涉及的名词进行解释:

域名系统(Domain Name System,DNS):互联网的一项服务,作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论。

Active MQ:一种开源的基于Java消息服务JMS(Java Message Service)规范的一种消息中间件的实现,Active MQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。

每秒查询数(Query Per Second,QPS):对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

Java版本的dns协议客户端工具类库(DnsJava):用于实现以类似linux的dig命令来与dns服务器进行通信,实现各种DNS资源记录的查询功能(如:ns a dnssec等)。

线程池(thread pool):一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。

在介绍本申请的实施例之前,首先对本申请的背景进行解释如下:

随着互联网的不断普及和完善,越来越多的用户通过互联网工作、学习和娱乐。DNS服务器为用户能够更方便的访问互联网发挥了重要作用,而QPS经常被用来衡量为互联网用户提供DNS解析查询服务的DNS服务器的性能,以及向DNS服务器发送DNS查询请求的模拟服务器的性能。

当用户通过用户交互界面发起DNS流量模拟需求时,后台系统通过应用集成消息通信中间件Active MQ将需要模拟的QPS发送到模拟服务器,模拟服务器启动执行线程池,按照计算好的周期值,以固定速率,使用dnsJava向目标DNS服务器,发送符合需求的DNS查询请求。其中,DnsJava是Java版本的dns协议客户端工具类库,服务器通过该类库完成与DNS服务器进行通信,实现各种DNS资源记录的查询功能,实现了用户更方便的访问互联网。

然而,当用户通过用户交互界面发起DNS流量模拟需求中的目标QPS为大容量的QPS时,该大容量的QPS已经超过了该模拟服务器的容量极限,模拟服务器无法有效地处理大容量的QPS。

针对上述问题,本申请提供了一种流量检测系统、方法及存储介质。该系统包括,控制子系统、模拟器集群连接和中间件,其中,模拟器集群中的至少两台模拟服务器与控制子系统连接,用于向控制子系统发送各自的状态信息,控制子系统用于根据每个模拟服务器的状态信息,通过中间件向模拟器集群中的至少一个可用模拟服务器发送流量查询请求,至少一个可用模拟服务器根据接收到的流量查询请求,通过与目标域名系统服务器通信,检测流量检测系统的性能。该技术方案中,控制子系统通过中间件,实现了向模拟器集群中的可用模拟服务器灵活地分配大容量QPS,也实现了检测系统性能的检测。

下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图1为本申请实施例提供的流量检测系统的结构示意图。参照图1所示,该流量检测系统可以包括:相互连接的控制子系统10、中间件11、模拟器集群12和目标域名系统服务器13。

示例性的,模拟器集群12包括:至少两台模拟服务器,每台模拟服务器还与控制子系统10连接,用于向控制子系统10发送各自的状态信息。

可选的,模拟器集群12可以包括五台模拟服务器,分别为模拟服务器121、模拟服务器122、模拟服务器123、模拟服务器124和模拟服务器125,且这五台服务器均可与控制子系统10通过无线的通信方式连接,且用于向控制子系统10发送各自的状态信息。

可选的,此处模拟器集群12中的五台模拟服务器只做举例说明,本申请实施例并不对模拟服务器的数量进行限定,其可以根据实际场景确定。

示例性的,控制子系统10用于根据每个模拟服务器的状态信息,通过中间件11向模拟器集群12中的至少一个可用模拟服务器发送流量查询请求。

可选的,中间件11可以是开放源代码消息中间件Active MQ,利用Java程序ActiveMQ来实现跨节点的QPS协调的功能。

在一般情况下,中间件11可以包括主用ActiveMQ(ActiveMQ Master)、备用ActiveMQ(ActiveMQ Slave)和数据库。其中,ActiveMQ Master通过jdbc与数据库连接,当ActiveMQ Master发生错误时,ActiveMQ Slave启动以代替ActiveMQ Master进行工作。

可选的,模拟器集群12中的五台模拟服务器均可以向控制子系统10发送各自的状态信息,控制子系统10可以接收五台模拟服务器各自的状态信息,并根据获取到的状态信息,判断出当前时刻可用的模拟服务器数量,例如,可用的模拟服务器有三台,分别为模拟服务器121、模拟服务器122和模拟服务器123,此时,控制子系统10向该三台模拟服务器发送流量查询请求。

示例性的,至少一个可用模拟服务器还用于根据接收到的流量查询请求,通过与目标域名系统服务器13通信,检测流量检测系统的性能。

可选的,每个可用模拟服务器具体用于监听流量查询请求队列,根据接收到的每个流量查询请求中的流量值,确定出查询周期,根据所述查询周期向目标域名系统服务器13发送流量查询请求。

可选的,模拟服务器121、模拟服务器122和模拟服务器123分别接收到来自控制子系统10流量查询请求,并监听各自相应的流量查询请求队列,根据接收到的每个流量查询请求中的流量值,利用scheduleAtFixedRate()方法,计算出各自的查询周期值,以固定的速率,向目标域名系统服务器13发送符合需求的流量查询请求。

具体的,scheduleAtFixedRate()方法定义:创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期,ScheduledFuture<?>scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit)。

使用给定的QPS目标,计算出一个确定的周期值(period)(计算方法为:1s/qps,然后转为微秒):

“long period=(long)Math.floor(((double)1000/tldQps)*1000);

return period。”

可选的,此处以模拟器集群12中有三台模拟服务器可用进行举例说明,实际应用中可用模拟服务器的数量可以根据实际场景确定,此处不再赘述。

本实施例提供的流量检测系统,该系统包括相互连接的控制子系统、中间件和模拟器集群,每个模拟器集群均包括至少两台模拟服务器,用于向控制子系统发送各自的状态信息,控制子系统根据状态信息,通过中间件向模拟器集群中的至少一个可用模拟服务器发送流量查询请求,该可用的模拟服务器根据接收到的流量查询请求,与目标域名系统服务器通信,检测流量检测系统的性能。通过控制子系统与模拟器集群协同工作,实现了灵活分配大容量流量查询请求,以及检测系统性能的检测。

图2为本申请实施例提供的控制子系统的结构示意图。参照图2所示,该子系统20可以包括:用户交互界面201、检测模块202与分配模块203。

示例性的,用户交互界面201用于获取外界发起的流量模拟任务。

可选的,当用户访问互联网时,用户交互界面201获取到当前时刻访问互联网的流量模拟任务。此处以用户交互界面201获取的流量模拟任务QPS为50万为例进行说明,值得注意的是,此处50万只做举例,并不对QPS的数值设限。

示例性的,检测模块202用于检测模拟器集群中每台模拟服务器的状态信息,确定出模拟器集群中的至少一个可用模拟服务器。

可选的,检测模块202检测到模拟器集群中五台模拟服务器的状态信息,该状态信息分别表明了五台模拟服务器在当前时刻是否可用,检测模块202确定模拟器集群中可用的模拟服务器只有三台。此处对服务器台数的限定如上述所述,此处不再赘述。

具体的,上述中“可用”指的是该模拟服务器在当前时刻可以用于处理控制子系统分配的流量模拟任务。

示例性的,分配模块203用于根据流量模拟任务,通过中间件向每个可用模拟服务器分发流量查询请求。

可选的,分配模块203根据需要的流量模拟任务以及可用的模拟服务器,将50w的QPS分别下发至可用的三台模拟服务器,该下发的过程,通过中间件与分配模块203和模拟服务器通信实现。

本实施例提供的控制子系统中,用户交互界面获取外界发起的流量模拟任务,检测模块检测模拟器集群中每台模拟服务器的状态信息,并确定出可用的模拟服务器,分配模块通过中间件将流量模拟任务分发至可用的模拟服务器。该方案中,控制子系统用于协调模拟器集群中的模拟服务器与流量模拟任务,为实现模拟服务器与目标域名系统服务器通信,以及检测流量检测系统的性能提供了基础。

图3为本申请实施例一提供的流量检测方法流程图。该方法可以应用于上述图1至图2所示的流量检测系统中,如图3所示,本申请实施例中流量检测方法可以按照如下步骤实现:

S301、接收外界发出的流量模拟任务,流量模拟任务包括:目标流量值。

示例性的,当用户想要了解流量检测系统的性能时,可以基于用户访问互联网的事件,使得控制子系统获取到用户发起的流量模拟任务,该流量模拟任务需要最终实现DNS服务器为用户提供DNS解析查询服务,使用户能够更方便的访问互联网。该流量模拟任务包括:目标流量值,此处以QPS为50万举例说明。

S302、根据模拟器集群中的每台模拟服务器的状态信息,确定模拟器集群中的至少一台可用模拟服务器。

示例性的,每台模拟服务器的状态信息是模拟器集群中每台模拟服务器的周期性同步信息,周期性同步信息包括:模拟服务器的负载信息和资源使用信息。

可选的,控制子系统在接收到目标流量值50万时,控制子系统获取模拟器集群中的每台模拟服务器的状态信息,该状态信息可以是每台模拟服务器的负载信息和资源使用信息。

其中,负载信息为模拟服务器的满负载的总容量,资源使用信息为模拟服务器在该容量下已经使用的容量与总容量的占比。控制子系统获取符合能够分配目标流量值50万的模拟服务器的数量。

具体的,每台模拟服务器的状态信息通过每台模拟服务器周期性的向控制子系统发送,该周期可以为1分钟、5分钟,此处不做限制。

S303、根据可用模拟服务器的数量,对目标流量值进行划分,得到至少一份流量值,流量值的份数与可用模拟服务器的数量一致。

示例性的,控制子系统获取得到符合分配标准的可用模拟服务器数量,根据该数量,对目标流量值50万进行划分,得到与可用模拟服务器数量一致的份数,若可用模拟服务器数量为N台,则划分的份数也为N份。

此处可用模拟服务器数量的台数应小于或等于模拟器集群中的模拟服务器的总数。

可选的,根据模拟器集群中可用模拟服务器的数量,对目标流量值进行均分,得到流量值相等的至少一份流量值。

示例性的,若可用模拟服务器的数量为3台,以及流量模拟任务的目标流量值QPS为50万,则将50万均分为3份,即,每份QPS约为16.67万的流量模拟任务。将流量模拟任务的目标流量值QPS 50万按照可用模拟服务器的数量3台均分后,控制子系统将向每台可用模拟服务器各发送QPS为16.67万的流量模拟任务。

S304、向至少一台可用模拟服务器分别发送流量查询请求,每台可用模拟服务器用于根据接收到的流量查询请求,通过与目标域名系统服务器通信,检测流量检测系统的性能。

示例性的,控制子系统将划分好的N份流量查询请求分别发送至N台可用的模拟服务器,具体的,控制子系统通过中间件向N台可用的模拟服务器分发流量查询请求,其中,模拟服务器在接收到流量查询请求后,与目标域名系统服务器通信,进行DNS查询服务。该中间件实现传递的功能上述已进行说明,此处不在赘述。

本实施例提供的流量检测方法,控制子系统接收外界发出的流量模拟任务,根据模拟器集群中的每台模拟服务器的状态信息,确定至少一台可用模拟服务器,根据可用模拟服务器的数量,将目标流量值划分成该数量对应的值,并通过中间件,向可用模拟服务器分别发送流量查询请求,可用模拟服务器与目标域名系统服务器通信,以实现对流量检测系统性能的检测。

图4为本申请实施例二提供的流量检测方法流程图。如图4所示,上述步骤S302,可以包括如下步骤:

S401、在模拟器集群中,确定出发出周期性同步信息的至少一个候选模拟服务器。

示例性的,在模拟器集群中,各个模拟服务器周期性的向控制子系统发送各自的状态信息,控制子系统接收各个模拟服务器的状态信息,确定出可被分配流量模拟任务的候选模拟服务器。

示例性的,该周期可以为1分钟、5分钟,此处不做限制。

S402、根据至少一个候选模拟服务器的负载信息、资源使用信息,确定模拟器集群中的至少一台可用模拟服务器。

示例性的,控制子系统根据接收到的候选模拟服务器的负载信息、资源使用信息,以及流量模拟任务的目标流量值,进行分配,确定可用的模拟服务器。

具体的,若目标流量值QPS为50万,1#模拟服务器负载信息为20万,资源使用信息为10%,2#模拟服务器负载信息为20万,资源使用信息为10%,3#模拟服务器负载信息为20万,资源使用信息为0%,4#模拟服务器负载信息为20万,资源使用信息为80%,5#模拟服务器负载信息为20万,资源使用信息为95%。

进一步地,5#模拟服务器基本为满载状态,控制子系统确定其他4台模拟服务器为候选模拟服务器,且1#模拟服务器还可负载18万,2#模拟服务器还可负载18万,3#模拟服务器还可负载20万,4#模拟服务器还可负载4万,根据目标流量值QPS为50万,控制子系统确定在不向4#模拟服务器分配流量模拟任务的情况下,也可使剩余的3台模拟服务器共同承担50万流量模拟任务,且均处于正常工作状态。

再进一步地,1#模拟服务器、2#模拟服务器和3#模拟服务器为可用的模拟服务器,控制子系统分别向可用的模拟服务器分配流量模拟任务16万、16万和18万。

可选的,候选模拟服务器的数量小于或等于模拟器集群中模拟服务器的总数,且大于或等于可用模拟服务器的数量,以及控制子系统向可用的模拟服务器分别分配流量模拟任务的数量,此处只作举例说明,并不做限制。

本实施例提供的流量检测方法,控制子系统确定出发出周期性同步信息的候选模拟服务器,且根据各个候选模拟服务器的负载信息、资源使用信息,确定模拟器集群中的可用模拟服务器。该技术方案中,控制子系统通过获取各个候选模拟服务器的负载信息、资源使用信息,最大程度上利用模拟器集群中的模拟服务器完成流量模拟任务。

图5为本申请实施例三提供的流量检测方法流程图。如图5所示,在本实施例中,该方法还可以包括如下步骤:

S501、接收至少一个可用模拟服务器发送的流量查询响应,该流量查询响应包括:目标域名系统服务器的每秒查询数。

示例性的,每台可用的模拟服务器根据接收到的流量查询请求,启动执行线程池,创建周期性运行的流量查询请求,按照计算好的周期值,从而以固定流量查询请求速率,即通过DnsJava向目标DNS服务器发送符合需求的DNS查询请求。

示例性的,目标域名系统服务器接收每台可用的模拟服务器发送的流量查询响应,该响应为目标域名系统服务器的每秒查询数。

可选的,一般使用Java版本的DNS协议客户端工具类库来实现DNS的相关查询操作,从而实现DNS查询模拟需求。

可选的,该周期值由Java延迟/周期执行线程池中的scheduleAtFixedRate()方法确定。

S502、根据所有可用模拟服务器发送的流量查询响应,确定流量检测系统的性能。

示例性的,目标域名系统服务器接收上述所有可用模拟服务器发送的流量查询响应,确定所有可用模拟服务器发送的流量查询响应的每秒查询数是否为50万,以检测流量检测系统的性能。

本实施例提供的流量检测方法,目标域名服务器接收至少一个可用模拟服务器发送的流量查询响应,流量查询响应包括:目标域名系统服务器的每秒查询数,再根据所有可用模拟服务器发送的流量查询响应进行确定,以实现对流量检测系统性能的检测。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如上述图3至图5所示实施例的方法。

可选的,本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述图3至图5所示实施例的方法。

本申请实施例还提供一种程序产品,该程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质读取所述计算机程序,至少一个处理器执行所述计算机程序时可实现上述图3至图5所示实施例的方法。

可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 流量检测系统、方法及存储介质
  • 一种流量装置中水流量稳定性检测方法及检测系统
技术分类

06120112376634