发明内容
有鉴于此,本说明书实施例提供了一种数据采集***。本说明书一个或者多个实施例同时涉及一种数据采集方法,一种数据采集装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据采集***,包括:
应用服务器、远程服务器;
所述应用服务器,被配置为与所述远程服务器建立数据传输通道,并通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;
所述远程服务器,被配置为调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
根据本说明书实施例的第二方面,提供了一种数据采集方法,应用于远程服务器,包括:
与应用服务器建立数据传输通道,并接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息;
调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据;
按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
可选地,所述与应用服务器建立数据传输通道,包括:
接收应用服务器发送的数据传输通道建立请求;
基于所述数据通道建立请求与所述应用服务器建立长连接控制通道以及长连接数据通道。
可选地,所述接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息,包括:
接收所述应用服务器通过所述长连接控制通道发送的数据存储模块的注册信息以及待检测指标的标识信息。
可选地,所述调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,包括:
调用远程直接内存访问模块通过所述长连接数据通道根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据。
可选地,所述调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,包括:
调用远程直接内存访问模块按照预设时间周期从所述数据存储模块读取所述指标数据;
相应的,所述按照预设数据处理策略对所述指标数据进行处理,包括:
基于所述待检测指标的指标数据,计算不同时间周期内所述待检测指标的变化结果并展示。
可选地,所述调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,包括:
调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取数据块中包含的数据;
对所述数据块中包含的数据进行解析获得加密数据及加密算法标识;
根据所述加密算法标识确定与加密算法对应的解密算法,并采用所述解密算法对所述加密数据进行解密,生成所述指标数据。
可选地,所述数据采集方法,还包括:
响应于所述应用服务器发送的数据采集结束指令,停止从所述数据存储模块读取所述指标数据,其中,所述应用服务器调用代理模块释放所述数据存储模块对应的内存。
根据本说明书实施例的第三方面,提供了一种数据采集装置,包括:
接收模块,被配置为与应用服务器建立数据传输通道,并接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息;
读取模块,被配置为调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据;
展示模块,被配置为按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
根据本说明书实施例的第四方面,提供了一种数据采集方法,应用于应用服务器,包括:
与远程服务器建立数据传输通道;
通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息;
采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据。
可选地,所述与远程服务器建立数据传输通道,包括:
向所述远程服务器发送数据通道建立请求,与所述远程服务器建立长连接控制通道以及长连接数据通道。
可选地,所述通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,包括:
在应用程序接口与代理模块间建立连接;
调用应用程序接口通过内存映射函数确定所述数据存储模块对应的内存分配信息,并将所述内存分配信息发送至所述代理模块;
调用所述代理模块将所述内存分配信息通过所述长连接控制通道发送至所述远程服务器。
可选地,所述将所述指标数据存储于所述数据存储模块,包括:
确定加密算法,采用所述加密算法对所述指标数据进行加密;
将加密结果以及加密算法标识以数据块的形式存储于所述数据存储模块。
可选地,所述数据采集方法,还包括:
调用应用程序接口释放所述待检测指标的指标数据;
调用代理模块向所述远程服务器发送数据采集结束指令,并由所述代理模块释放所述数据存储模块对应的内存。
可选地,所述采集所述待检测指标的指标数据之后,还包括:
调用代理模块按照第一数据处理策略对所述指标数据进行处理,并将生成的中间数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取所述中间数据。
根据本说明书实施例的第五方面,提供了一种数据采集装置,包括:
传输通道建立模块,被配置为与远程服务器建立数据传输通道;
发送模块,被配置为通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息;
采集模块,被配置为采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据。
根据本说明书实施例的第六方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令以实现所述数据采集方法的步骤。
根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据采集方法的步骤。
本说明书一个实施例由应用服务器与远程服务器建立数据传输通道,并通过所述数据传输通道向远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;远程服务器通过调用远程直接内存访问模块,根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
本说明书实施例中,远程服务器利用远端直接内存访问模块(RDMA)读取应用服务器中待检测指标的指标数据,由于RDMA可以将指标数据直接从所述应用服务器的数据存储模块快速传输到远程服务器中,在数据传输的整个过程中无需应用程序中的操作***和CPU的参与,因此,一方面有利于减少对操作***的干扰,避免给操作***带来抖动;另一方面有利于减少应用服务器的CPU在数据传输过程中的消耗,从而有利于提升***的处理性能,并有利于减少网络通信延迟。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
RDMA:在数据中心领域,远程直接内存访问(英语:remote direct memoryaccess,RDMA)是一种绕过远程主机操作***内核访问其内存中数据的技术,由于不经过操作***,不仅节省了大量CPU资源,同样也提高了***吞吐量、降低了***的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。
RoCE:基于融合以太网的RDMA(英语:RDMA over Converged Ethernet,缩写RoCE)是一个网络协议,允许在一个以太网网络上使用远程直接内存访问(RDMA)。
检测:通过收集应用服务器操作***或者应用进程的各种数据,来判断应用服务器当前运行状态的一种方法。应用服务器检测程序部署在几乎所有需要对外提供服务的机器上。
目前的应用服务器上广泛部署着各种各样的检测***,这些检测***会采集各种各样的检测数据,并将其保存在本地或者上传到某些数据库或者日志服务器上。而一台应用服务器往往会部署诸多的检测项,执行这些检测项的数据采集程序会增加应用服务器的资源消耗。具体的,目前应用服务器中的应用进程在运行过程中生成的指标数据会存储于为应用进程分配的内存中,在远程服务器需要读取应用进程的内存中的指标数据时,需要跟应用服务器进行通信,即向应用服务器发送数据获取请求,应用服务器接收到数据获取请求后,在该内存中读指标数据,并将指标数据发送至远程服务器,这一过程会为应用服务器带来CPU开销。
目前RDMA/RoCE作为一种绕过操作***内核的通信方式,在数据中心网络中得到了广泛的应用,随着硬件性能以及应用对性能的不断提升,其应用场景也越来越广泛。RDMA由于可以支持直接远程内存访问,基于RDMA技术可以在远程服务器上直接读写应用服务器的内存,而无需应用服务器CPU的干预,因此可以做到对应用服务器的几乎零CPU开销。
因此,本说明书实施例将RDMA技术结合在检测***中,实现一种基于RDMA的远程数据采集的方法。有利于减少在应用服务器与远程服务器间进行数据传输的过程中对应用服务器CPU的干扰,从而降低应用服务器的CPU在数据传输过程中的消耗,提升***的处理性能,并有利于减少网络通信延迟。
在本说明书中,提供了一种数据采集***,本说明书同时涉及一种数据采集方法,一种数据采集装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种数据采集***的架构图,包括:
应用服务器102以及远程服务器104;
所述应用服务器102,被配置为与所述远程服务器104建立数据传输通道,并通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;
所述远程服务器104,被配置为调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
具体的,应用服务器(App Server),即应用进程所在的服务器,同样是需要采集应用进程的待检测指标的检测数据的服务器;远程服务器(Remote Collect Server),负责通过RDMA Read从各个应用服务器上采集所需的待检测指标的指标数据。
应用程序接口,即SDK接口,SDK是基于RDMA的检测***提供的软件开发工具包,可提供一系列简单易用的函数和方法,用于加速应用快速接入基于RDMA的检测***;代理模块(Zagent,zero-overhead agent),作为运行在应用服务器上的采集进程,负责和远程服务器通信,将应用服务器上的一些所需的信息上传到远程服务器,以便远程服务器可以直接通过RDMA Read来进行数据采集和解析。
数据存储模块(Share Memory),即共享内存,是与应用进程相互独立的一块存储区域,里面存储了远程服务器需要采集的指标数据。这块内存通过共享内存技术在代理模块和应用进程或者代理模块和操作***内核之间进行共享。代理模块将其在RDMA网卡上注册,并将注册之后的内存地址、大小等信息上传给远程服务器。
本说明书实施例中,远程服务器基于RDMA采集应用服务器的一个应用进程的待检测指标的指标数据的过程具体如下:
初始化阶段:
应用服务器中的操作***开始运行后,代理模块进入初始化流程,在其初始化的过程中,应用服务器与远程服务器建立连接,即建立长连接控制通道和长连接数据通道;然后应用进程运行并初始化,应用进程调用应用程序接口与代理模块建立连接,以便后续通过该连接传输必要的内存相关信息;接着应用程序接口通过mmap函数(内存映射函数)为应用进程申请存放待检测指标的指标数据的数据存储模块,即为应用进程的待检测指标的指标数据分配内存;申请成功后,初始化应用进程中需要进行检测的待检测指标的标识信息,如决定相应指标需要保存的位置、指标的存放格式等;其中,mmap函数是用来建立从虚拟空间到磁盘空间的映射,可以将一个虚拟空间地址映射到一个磁盘文件上,当不设置这个地址时,则由***自动设置,函数返回对应的内存地址(虚拟地址),当访问这个地址时,就需要把磁盘上的内容拷贝到内存,然后就可以读或者写,最后通过manmap函数可以将内存上的数据换回到磁盘,也就是解除虚拟空间和内存空间的映射,通过这种方式即可实现进程共享数据(共享内存)的过程。
应用程序接口将相应数据存储模块的内存分配信息以及待检测指标的标识信息发送给代理模块,由代理模块调用RDMA相关接口对数据存储模块进行只读注册,注册可防止所述数据存储模块对应的物理内存被分配、被迁移、被销毁或被释放,以便后续RDMA网卡可以直接通过RDMA Read来读取所述数据存储模块中存储的指标数据;
代理模块完成注册后,将所述数据存储模块的注册信息以及应用进程一些待检测指标相关的标识信息,通过长连接控制通道发送至远程服务器,以在初始化完成后,远程服务器可以直接通过RDMA Read来读取应用进程需要检测的待检测指标的指标数据。
数据读取阶段:
远程服务器根据其配置以及代理模块上传的待检测指标的标识信息,确定指标数据的采集频率,以及根据数据存储模块的标识信息确定采集哪个数据存储模块存储的指标数据,这一过程由远程服务器主动发起,并利用RDMA Read采集所述数据存储模块中的指标数据,然后可基于所述指标数据进行计算,并展示计算结果。
释放阶段:
在应用进程退出时,应用进程的待检测指标的指标数据应停止采集,首先应用进程调用应用程序接口释放需要待检测指标的指标数据;或在应用进程异常退出的情况下,操作***将回收所述数据存储模块对应的内存;代理模块在感知到应用进程退出后,通知远程服务器停止采集该应用进程的待检测指标的指标数据;远程服务器接收到停止采集的指令后,确认停止采集指标数据,然后由代理模块其为该应用进程所注册的所述数据存储模块的内存资源。至此,该应用进程的初始化-数据采集-释放阶段结束。
本说明书实施例通过RDMA Read的方式,在远程服务器上定期进行数据采集,从而无需额外消耗应用服务器的CPU/内存/读写资源,从而减少对应用进程的影响,同时有利于提高从应用服务器向远程服务器进行数据传输的传输效率。
本说明书一个实施例由应用服务器与远程服务器建立数据传输通道,并通过所述数据传输通道向远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;远程服务器通过调用远程直接内存访问模块,根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
本说明书实施例中,远程服务器利用远端直接内存访问模块(RDMA)读取应用服务器中待检测指标的指标数据,由于RDMA可以将指标数据直接从所述应用服务器的数据存储模块快速传输到远程服务器中,在数据传输的整个过程中无需应用程序中的操作***和CPU的参与,因此,一方面有利于减少对操作***的干扰,避免给操作***带来抖动;另一方面有利于减少应用服务器的CPU在数据传输过程中的消耗,从而有利于提升***的处理性能,并有利于减少网络通信延迟。
图2示出了根据本说明书一个实施例提供的一种数据采集方法的处理流程图,包括步骤202至步骤206。
步骤202,与应用服务器建立数据传输通道,并接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息。
具体的,本说明书实施例提供的数据采集方法应用于远程服务器(RemoteCollect Server),负责通过调用远程直接内存访问模块(RDMA)从各个应用服务器上采集应用进程的待检测指标的指标数据。
其中,远程服务器在从应用服务器中读取应用进程的待检测指标的指标数据之前,需由应用服务器对应用进程以及用于存储所述应用进程的待检测指标的指标数据的内存进行初始化。
具体的,应用服务器中的操作***开始运行后,应用服务器中的代理模块(Zagent,zero-overhead agent)进入初始化流程,在其初始化的过程中,应用服务器与远程服务器建立连接,并由代理模块作为运行在应用服务器上的采集进程,负责和远程服务器通过该连接进行通信,将应用服务器上的一些所需的信息上传到远程服务器,以便远程服务器可以直接通过RDMA Read来进行数据采集和解析。
另外,应用服务器中还设置有应用程序接口,应用进程调用应用程序接口与代理模块建立连接,以便后续通过该连接传输必要的内存相关信息;接着应用程序接口通过mmap函数(内存映射函数)为应用进程申请存放待检测指标的指标数据的数据存储模块,即为应用进程的待检测指标的指标数据分配内存,具体可以包括内存的位置以及内存大小等;申请成功后,初始化应用进程中需要进行检测的待检测指标的标识信息,如决定相应指标需要保存的位置、指标的存放格式等;
然后由应用程序接口将相应数据存储模块的内存分配信息以及待检测指标的标识信息发送给代理模块,由代理模块调用RDMA相关接口对数据存储模块进行只读注册,注册可防止所述数据存储模块对应的物理内存被分配、被迁移、被销毁或被释放,以便后续RDMA网卡可以直接通过RDMA Read来读取所述数据存储模块中存储的指标数据;
注册完成后,代理模块将所述数据存储模块的注册信息以及应用进程一些待检测指标相关的标识信息,通过数据传输通道发送至远程服务器,以在初始化完成后,远程服务器可以直接通过RDMA Read来读取应用进程需要检测的待检测指标的指标数据。
具体实施时,与应用服务器建立数据传输通道,具体即接收应用服务器发送的数据传输通道建立请求,基于所述数据通道建立请求与所述应用服务器建立长连接控制通道以及长连接数据通道。
进一步的,接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息,即接收所述应用服务器通过所述长连接控制通道发送的数据存储模块的注册信息以及待检测指标的标识信息。
具体的,所述数据传输通道由长连接控制通道和长连接数据通道组成,因此,在应用服务器与远程服务器建立数据传输通道的过程中,先由应用服务器向远程服务器发送通道建立请求,并通过长连接的方式建立所述应用服务器与远程服务器间的长连接控制通道和长连接数据通道,并由应用服务器的代理模块通过所述长连接控制通道将数据存储模块的注册信息以及待检测指标的标识信息发送至所述远程服务器。
通过建立数据传输通道,并利用数据传输通道进行信息传输,有利于提高数据传输效率,从而提升数据采集效率。
步骤204,调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据。
具体实施时,调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,具体即调用远程直接内存访问模块通过所述长连接数据通道根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据。
具体的,远程服务器接收到代理模块上传的待检测指标的标识信息后,可根据其自身配置以及所述标识信息确定指标数据的采集频率,以及根据数据存储模块的标识信息确定采集哪个数据存储模块存储的指标数据,这一过程由远程服务器主动发起,并利用RDMA Read采集所述数据存储模块中的指标数据。
或者,调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,还可通过以下方式实现:
调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取数据块中包含的数据;
对所述数据块中包含的数据进行解析获得加密数据及加密算法标识;
根据所述加密算法标识确定与加密算法对应的解密算法,并采用所述解密算法对所述加密数据进行解密,生成所述指标数据。
具体的,为保证在应用服务器和所述远程服务器间传输的指标数据的安全性,本说明书实施例可在应用服务器采集所述待检测指标的指标数据后,利用预设的加密算法对所述指标数据进行加密生成对应的加密结果,并将所述加密结果以及所述加密算法的算法标识以数据块的形式存储于所述数据存储模块。
远程服务器需从应用服务器读数据的情况下,即可直接利用RDMA技术从应用服务器的数据存储模块读取所述加密结果,但由于远程服务器在读取应用服务器中应用进程的待检测指标的指标数据后,需按照预设数据处理策略对所述指标数据进行处理,因此,在应用服务器对所述指标数据进行加密,并将加密结果和加密算法标识以数据块的形式存储至数据存储模块之后,远程服务器可直接从数据存储模块读取所述数据块中包含的数据,并对所述数据块中包含的数据进行解析获得加密数据及加密算法标识,以根据所述加密算法标识确定与加密算法对应的解密算法,并采用所述解密算法对所述加密数据进行解密,生成所述指标数据。
实际应用中,所述加密算法可以是对称加密算法,包括但不限于DES(DataEncryption Standard,数据加密标准)算法、3DES算法、AES(Advanced EncryptionStandard,高级加密标准)算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。
步骤206,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
具体的,不同待检测指标可对应不同的预设数据处理策略,具体可根据实际需求确定,在此不做限制。实际应用中,可根据所述数据采集方法所应用的项目确定待检测指标的数据处理策略,并按照所述数据处理策略对待检测指标的指标数据进行处理,生成对应的处理结果并展示。
例如,若所述待检测指标为CPU,并需计算一天之内CPU的使用率,或者计算CPU在第一时间区间和第二时间区间的使用率,并进一步计算CPU在第二时间区间的使用率相对于第一时间区间的使用率的增长率或下降率;或者在所述数据采集方法应用于交易场景时,所述待检测指标可以是交易量、交易时间、交易类型等,数据处理策略即可以是计算一天内目标交易对象的交易量、计算一天内目标交易对象在不同时段的交易量,或计算目标交易对象在第一时段和第二时段的交易量,并计算目标交易对象在第二时段的交易量相对于第一时段的交易量的增长率或下降率。
另外,调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,具体即调用远程直接内存访问模块按照预设时间周期从所述数据存储模块读取所述指标数据;
相应的,所述按照预设数据处理策略对所述指标数据进行处理,即基于所述待检测指标的指标数据,计算不同时间周期内所述待检测指标的变化结果并展示。
具体的,远程服务器可定期从应用服务器的数据存储模块采集待检测指标的指标数据,例如每隔10秒钟采集一次,若待检测指标的指标数据在这10秒钟内发生变化,则远程服务器可根据两次采集的指标数据,计算待检测指标的指标值在这10秒钟的变化率(增长率或下降率),或者根据两次采集的指标数据统计所述待检测指标的相关统计值,然后展示计算结果或统计结果。
另外,本说明书实施例除通过前述方式由远程服务器直接利用RDMA从应用服务器读取指标数据,并按照预设数据处理策略对指标数据进行处理以得到对应的处理结果外,还可保留代理模块的部分计算工作。
例如,应用服务器将应用进程的待检测指标的指标数据存储于数据存储模块后,代理模块同样可按照预设时间周期从所述数据存储模块中读取指标数据,并对所述指标数据进行计算,计算过程所使用的数据处理策略可与前述远程服务器所使用的预设数据策略相同或不同,具体的代理模块所能提供的计算逻辑具体可根据实际需求确定。
计算完成后,再将计算结果存入数据存储模块,这种情况下,远程服务器在读取数据时,可直接读取数据存储模块中存储的所述计算结果,有利于减少所述远程服务器所需读取数据的数据量,并有利于减少远程服务器中的计算量。
除此之外,在应用服务器的应用进程退出的情况下,可向远程服务器发送数据采集结束指令,应用服务器响应于所述应用服务器发送的数据采集结束指令,停止从所述数据存储模块读取所述指标数据,其中,所述应用服务器调用代理模块释放所述数据存储模块对应的内存。
具体的,在应用服务器的应用进程退出时,应用进程的待检测指标的指标数据应停止采集,首先应用进程调用应用程序接口释放需要待检测指标的指标数据;或在应用进程异常退出的情况下,操作***将回收所述数据存储模块对应的内存;代理模块在感知到应用进程退出后,通知远程服务器停止采集该应用进程的待检测指标的指标数据;远程服务器接收到停止采集的指令后,确认停止采集指标数据,然后由代理模块其为该应用进程所注册的所述数据存储模块的内存资源。至此,远程服务器对应用进程的待检测指标的指标数据进行采集的过程结束。
具体实施时,还可在应用程序接口前端增加除了应用程序、流量检测、核心数据之外的更多的采集项,或可将大部分数据检测采集工作卸载到远程服务器,但仍然保留代理模块的部分计算工作。
本说明书实施例除在初始化和资源释放阶段,由代理模块将数据存储模块的相关信息同步到远程服务器之外,指标数据的采集和数据上传这两个关键步骤都由远程服务器来完成,对应用服务器CPU、内存、I/O等的开销只有在初始化阶段存在,对应用服务器的影响较小。
本说明书实施例将RDMA技术与数据采集相结合,利用RDMA远程读写内存的能力,将数据检测和采集过程卸载到远程服务器上,从而避免由于数据检测、采集传输所带来的应用服务器的CPU开销,基于RDMA实现远程服务器在应用服务器无感知的情况下,从应用服务器读取数据,有利于节省了应用服务器的CPU资源,同样也提高了***吞吐量、降低了***的网络通信延迟。
本说明书一个实施例由应用服务器与远程服务器建立数据传输通道,并通过所述数据传输通道向远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;远程服务器通过调用远程直接内存访问模块,根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
本说明书实施例中,远程服务器利用远端直接内存访问模块(RDMA)读取应用服务器中待检测指标的指标数据,由于RDMA可以将指标数据直接从所述应用服务器的数据存储模块快速传输到远程服务器中,在数据传输的整个过程中无需应用程序中的操作***和CPU的参与,因此,一方面有利于减少对操作***的干扰,避免给操作***带来抖动;另一方面有利于减少应用服务器的CPU在数据传输过程中的消耗,从而有利于提升***的处理性能,并有利于减少网络通信延迟。
与上述方法实施例相对应,本说明书还提供了数据采集装置实施例,图3示出了本说明书一个实施例提供的一种数据采集装置的示意图。如图3所示,该装置包括:
接收模块302,被配置为与应用服务器建立数据传输通道,并接收所述应用服务器通过所述数据传输通道发送的数据存储模块的注册信息以及待检测指标的标识信息;
读取模块304,被配置为调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据;
展示模块306,被配置为按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
可选地,所述接收模块302,包括:
第一接收子模块,被配置为接收应用服务器发送的数据传输通道建立请求;
通道建立子模块,被配置为基于所述数据通道建立请求与所述应用服务器建立长连接控制通道以及长连接数据通道。
可选地,所述接收模块302,包括:
第二接收子模块,被配置为接收所述应用服务器通过所述长连接控制通道发送的数据存储模块的注册信息以及待检测指标的标识信息。
可选地,所述读取模块304,包括:
第一读取子模块,被配置为调用远程直接内存访问模块通过所述长连接数据通道根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据。
可选地,所述读取模块304,包括:
第二读取子模块,被配置为调用远程直接内存访问模块按照预设时间周期从所述数据存储模块读取所述指标数据;
相应的,所述展示模块306,包括:
展示子模块,被配置为基于所述待检测指标的指标数据,计算不同时间周期内所述待检测指标的变化结果并展示。
可选地,所述读取模块304,包括:
第三读取子模块,被配置为调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取数据块中包含的数据;
解析子模块,被配置为对所述数据块中包含的数据进行解析获得加密数据及加密算法标识;
解密子模块,被配置为根据所述加密算法标识确定与加密算法对应的解密算法,并采用所述解密算法对所述加密数据进行解密,生成所述指标数据。
可选地,所述数据采集装置,还包括:
响应模块,被配置为响应于所述应用服务器发送的数据采集结束指令,停止从所述数据存储模块读取所述指标数据,其中,所述应用服务器调用代理模块释放所述数据存储模块对应的内存。
上述为本实施例的一种数据采集装置的示意性方案。需要说明的是,该数据采集装置的技术方案与上述的数据采集方法的技术方案属于同一构思,数据采集装置的技术方案未详细描述的细节内容,均可以参见上述数据采集方法的技术方案的描述。
图4示出了根据本说明书一个实施例提供的一种数据采集方法的处理流程图,包括步骤402至步骤406。
步骤402,与远程服务器建立数据传输通道。
具体的,本说明书实施例提供的数据采集方法,应用于应用服务器(App Server),所述应用服务器即需要采集应用进程的待检测指标的检测数据的服务器,远程服务器(Remote Collect Server)为负责通过RDMA Read从各个应用服务器上采集所需的待检测指标的指标数据;应用服务器采集应用进程的待检测指标的指标数据后,由远程服务器利用RDMA技术从应用服务器读取所述指标数据。
其中,远程服务器在从应用服务器中读取应用进程的待检测指标的指标数据之前,需由应用服务器对应用进程以及用于存储所述应用进程的待检测指标的指标数据的内存进行初始化,具体的初始化过程可参见前述应用于远程服务器的方法实施例所述的初始化过程,在此不再赘述。
在其初始化的过程中,应用服务器与远程服务器建立连接,即建立数据传输通道,具体实施时,与远程服务器建立数据传输通道,包括:向所述远程服务器发送数据通道建立请求,与所述远程服务器建立长连接控制通道以及长连接数据通道。
步骤404,通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息。
具体实施时,所述通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,包括:
在应用程序接口与代理模块间建立连接;
调用应用程序接口通过内存映射函数确定所述数据存储模块对应的内存分配信息,并将所述内存分配信息发送至所述代理模块;
调用所述代理模块将所述内存分配信息通过所述长连接控制通道发送至所述远程服务器。
具体的,应用程序接口,即SDK接口,SDK是基于RDMA的检测***提供的软件开发工具包,可提供一系列简单易用的函数和方法,用于加速应用快速接入基于RDMA的检测***;代理模块(Zagent,zero-overhead agent),作为运行在应用服务器上的采集进程,负责和远程服务器通信,将应用服务器上的一些所需的信息上传到远程服务器,以便远程服务器可以直接通过RDMA Read来进行数据采集和解析。
步骤406,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据。
具体的,数据存储模块(Share Memory),即共享内存,这块内存里面存储了远程服务器需要采集的指标数据。这块内存通过共享内存技术在代理模块和应用进程或者代理模块和操作***内核之间进行共享。代理模块将其在RDMA网卡上注册,并将注册之后的内存地址、大小等信息上传给远程服务器。
远程服务器可调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据,具体即调用远程直接内存访问模块通过所述长连接数据通道根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据。
具体实施时,所述将所述指标数据存储于所述数据存储模块,包括:
确定加密算法,采用所述加密算法对所述指标数据进行加密;
将加密结果以及加密算法标识以数据块的形式存储于所述数据存储模块。
具体的,为保证在应用服务器和所述远程服务器间传输的指标数据的安全性,本说明书实施例可在应用服务器采集所述待检测指标的指标数据后,利用预设的加密算法对所述指标数据进行加密生成对应的加密结果,并将所述加密结果以及所述加密算法的算法标识以数据块的形式存储于所述数据存储模块。
远程服务器在需从应用服务器读数据的情况下,即可直接利用RDMA技术从应用服务器的数据存储模块读取所述加密结果,但由于远程服务器在读取应用服务器中应用进程的待检测指标的指标数据后,需按照预设数据处理策略对所述指标数据进行处理,因此,在应用服务器对所述指标数据进行加密,并将加密结果和加密算法标识以数据块的形式存储至数据存储模块之后,远程服务器可直接从数据存储模块读取所述数据块中的数据,并对所述数据块中的数据进行解析获得加密数据及加密算法标识,以根据所述加密算法标识确定与加密算法对应的解密算法,并采用所述解密算法对所述加密数据进行解密,生成所述指标数据。
实际应用中,所述加密算法可以是对称加密算法,包括但不限于DES(DataEncryption Standard,数据加密标准)算法、3DES算法、AES(Advanced EncryptionStandard,高级加密标准)算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法等。
具体实施时,在应用服务器的应用进程退出的情况下,可调用应用程序接口释放所述待检测指标的指标数据,调用代理模块向所述远程服务器发送数据采集结束指令,并由所述代理模块释放所述数据存储模块对应的内存。
具体的,在应用服务器的应用进程退出时,应用进程的待检测指标的指标数据应停止采集,首先应用进程调用应用程序接口释放需要待检测指标的指标数据;或在应用进程异常退出的情况下,操作***将回收所述数据存储模块对应的内存;代理模块在感知到应用进程退出后,通知远程服务器停止采集该应用进程的待检测指标的指标数据;远程服务器接收到停止采集的指令后,确认停止采集指标数据,然后由代理模块其为该应用进程所注册的所述数据存储模块的内存资源。至此,远程服务器对应用进程的待检测指标的指标数据进行采集的过程结束。
具体实施时,所述采集所述待检测指标的指标数据之后,还包括:
调用代理模块按照第一数据处理策略对所述指标数据进行处理,并将生成的中间数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取所述中间数据。
具体的,本说明书实施例可将大部分数据检测采集工作卸载到远程服务器,但仍然保留代理模块的部分计算工作。
本说明书一个实施例由应用服务器与远程服务器建立数据传输通道,并通过所述数据传输通道向远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息,采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块;远程服务器通过调用远程直接内存访问模块,根据所述注册信息及所述标识信息从所述数据存储模块中读取所述指标数据,按照预设数据处理策略对所述指标数据进行处理,并将生成的处理结果进行展示。
本说明书实施例中,远程服务器利用远端直接内存访问模块(RDMA)读取应用服务器中待检测指标的指标数据,由于RDMA可以将指标数据直接从所述应用服务器的数据存储模块快速传输到远程服务器中,在数据传输的整个过程中无需应用程序中的操作***和CPU的参与,因此,一方面有利于减少对操作***的干扰,避免给操作***带来抖动;另一方面有利于减少应用服务器的CPU在数据传输过程中的消耗,从而有利于提升***的处理性能,并有利于减少网络通信延迟。
与上述方法实施例相对应,本说明书还提供了数据采集装置实施例,图5示出了本说明书一个实施例提供的一种数据采集装置的示意图。如图5所示,该装置包括:
传输通道建立模块502,被配置为与远程服务器建立数据传输通道;
发送模块504,被配置为通过所述数据传输通道向所述远程服务器发送数据存储模块的注册信息以及待检测指标的标识信息;
采集模块506,被配置为采集所述待检测指标的指标数据,并将所述指标数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息,从所述数据存储模块中读取所述指标数据。
可选地,所述传输通道建立模块502,包括:
发送子模块,被配置为向所述远程服务器发送数据通道建立请求,与所述远程服务器建立长连接控制通道以及长连接数据通道。
可选地,所述发送模块504,包括:
连接建立子模块,被配置为在应用程序接口与代理模块间建立连接;
第一发送子模块,被配置为调用应用程序接口通过内存映射函数确定所述数据存储模块对应的内存分配信息,并将所述内存分配信息发送至所述代理模块;
第二发送子模块,被配置为调用所述代理模块将所述内存分配信息通过所述长连接控制通道发送至所述远程服务器。
可选地,所述采集模块506,包括:
加密子模块,被配置为确定加密算法,采用所述加密算法对所述指标数据进行加密;
存储子模块,被配置为将加密结果以及加密算法标识以数据块的形式存储于所述数据存储模块。
可选地,所述数据采集装置,还包括:
调用模块,被配置为调用应用程序接口释放所述待检测指标的指标数据;
指令发送模块,被配置为调用代理模块向所述远程服务器发送数据采集结束指令,并由所述代理模块释放所述数据存储模块对应的内存。
可选地,所述数据采集装置,还包括:
处理模块,被配置为调用代理模块按照第一数据处理策略对所述指标数据进行处理,并将生成的中间数据存储于所述数据存储模块,其中,所述远程服务器调用远程直接内存访问模块根据所述注册信息及所述标识信息从所述数据存储模块中读取所述中间数据。
上述为本实施例的一种数据采集装置的示意性方案。需要说明的是,该数据采集装置的技术方案与上述的数据采集方法的技术方案属于同一构思,数据采集装置的技术方案未详细描述的细节内容,均可以参见上述数据采集方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,所述存储器610用于存储计算机可执行指令,处理器620用于执行如下计算机可执行指令以用于实现所述数据采集方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据采集方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据采集方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于实现所述数据采集方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据采集方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据采集方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。