业务监控方法、装置和计算机设备与流程

文档序号:11156413阅读:237来源:国知局
业务监控方法、装置和计算机设备与制造工艺

本发明涉及计算机技术领域,特别是涉及一种业务监控方法、装置和计算机设备。



背景技术:

随着互联网技术的发展,越来越多的用户通过互联网来从事社会生活。随着用户群体的快速增加,互联网中用户请求量也在快速增加,互联网系统需要对大量的用户请求量进行监控,进而了解系统的健康状况并及时发现系统问题。



技术实现要素:

本发明实施例提供一种业务监控方法、装置和计算机设备,可以避免业务监控中监控数据丢失的情况。

一种业务监控方法,包括:

获取用户请求信息;

将所述用户请求信息封装为监控数据;

获取与所述监控数据对应的分布式消息队列的队列编号,并将所述监控数据发送给分布式消息队列集群中与所述队列编号对应的分布式消息队列进行存储;

获取线程标识对应的队列编号,从所述分布式消息队列集群中获取与所述队列编号对应的分布式消息队列中的监控数据;

将与所述队列编号对应的所述分布式消息队列中的监控数据分配给所述线程标识对应的线程处理。

一种业务监控装置,包括:

获取模块,用于获取用户请求信息;

封装模块,用于将所述用户请求信息封装为监控数据;

数据存储模块,用于获取与所述监控数据对应的分布式消息队列的队列编号,并将所述监控数据发送给分布式消息队列集群中与所述队列编号对应的分布式消息队列进行存储;

数据获取模块,用于获取线程标识对应的队列编号,从所述分布式消息队列集群中获取与所述队列编号对应的分布式消息队列中的监控数据;

分配模块,用于将与所述队列编号对应的所述分布式消息队列中的监控数据分配给所述线程标识对应的线程处理。

一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

获取用户请求信息;

将所述用户请求信息封装为监控数据;

获取与所述监控数据对应的分布式消息队列的队列编号,并将所述监控数据发送给分布式消息队列集群中与所述队列编号对应的分布式消息队列进行存储;

获取线程标识对应的队列编号,从所述分布式消息队列集群中获取与所述队列编号对应的分布式消息队列中的监控数据;

将与所述队列编号对应的所述分布式消息队列中的监控数据分配给所述线程标识对应的线程处理。

本发明实施例中的业务监控方法、装置和计算机设备,在获取监控数据后,获取监控数据对应的分布式消息队列编号,并将监控数据发送给对应编号的分布式消息队列存储。通过引入分布式消息队列、将监控数据存储于分布式消息队列,实现监控系统从分布式消息队列中获取监控数据,并对监控数据进行处理。通过将监控系统与存储监控数据的本地队列解耦,避免了在监控系统不稳定时,本地队列发送的监控数据丢失的情况。

附图说明

图1为一个实施例中业务监控方法的应用环境示意图;

图2为一个实施例中服务器的内部结构示意图;

图3为一个实施例中业务监控方法的流程图;

图4为一个实施例中业务监控方法的系统架构图;

图5为一个实施例中业务监控装置的结构框图;

图6为一个实施例中数据存储模块506的结构框图;

图7为另一个实施例中业务监控装置的结构框图;

图8为另一个实施例中业务监控装置的结构框图。

具体实施方式

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

图1为一个实施例中业务监控方法的应用环境示意图。如图1所示,该应用环境包括部署在服务器上的应用网关、本地队列、分布式消息队列集群、监控系统、数据库和监控后台。其中,应用网关上部署有监控拦截器,监控拦截器可拦截用户请求并记录用户请求信息;本地队列和分布式消息队列集群可存储监控数据;监控系统可处理监控数据;数据库可存储监控系统对监控数据的处理结果;监控后台可读取、展示数据库中数据。本实施例中,监控拦截器可将记录的用户请求信息封装为监控数据发送给本地队列进行存储,再从本地队列的消息队列中获取监控数据,通过监控数据对应的用户请求接收时刻和分布式消息队列的队列数可获取监控数据对应的分布式消息队列的队列编号,监控拦截器再将监控数据发送给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。监控系统中包括可处理监控数据的线程,每个线程带有线程标识。根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,监控系统可获取与线程标识相对应的分布式消息队列的队列编号所对应的分布式消息队列中的监控数据,并将监控数据分配给对应的线程处理。监控系统还可获取线程对监控数据的处理结果,并将上述处理结果存储于数据库中。监控后台可读取数据库存储的对监控数据的处理结果,并将获取的对监控数据的处理结果可视化展示。以上应用网关、本地队列、分布式消息队列集群、监控系统、数据库和监控后台可部署在同一台服务器上,也可部署在不同的服务器上。

图2为一个实施例中服务器的内部结构示意图。如图2所示,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统、数据库和业务监控装置,数据库中存储有对监控数据进行分析获取的统计数据,该业务监控装置用于实现适用于服务器的一种业务监控方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的业务监控装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种业务监控方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如拦截用户请求等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器也属于计算机设备。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

图3为一个实施例中业务监控方法的流程图,如图3所示,一种业务监控的方法,包括:

S302,获取用户请求信息。

在一个实施例中,服务器中应用网关上部署有监控拦截器,监控拦截器可拦截服务器接收的用户请求和服务器对用户请求的响应,并记录用户请求信息。其中用户请求信息可包括服务器接收用户请求的时刻,即用户请求接收时刻;服务器对用户请求作出响应的时刻,即用户请求响应时刻;用户请求调用的服务模块,即服务器上用于处理用户请求的模块;用户请求的服务节点,即服务器上用于处理用户请求的服务器地址;用户请求方IP(Internet Protocol,网络之间互连的协议);用户请求的URL(Uniform Resource Locator,统一资源定位符);被请求方名称等。

S304,将用户请求信息封装为监控数据。

在一个实施例中,监控拦截器可将获取的用户请求信息封装为监控数据,并将监控数据存储于本地队列的消息队列中。例如,将用户请求信息封装成的监控数据为

{srvGroup='cdo-card',//用户请求调用的服务模块

srvNode='173.17.100.34:39814',//用户请求的服务节点

url='PageCardService.queryPage',//用户请求的URL

clientIp='173.17.153.176',//用户请求方IP

consumer='store-app',//被请求方名称

startTime=1481536600008,//用户请求接收时刻

endTime=1481536615369,//用户请求响应时刻

status=0//状态}

S306,获取与监控数据对应的分布式消息队列的队列编号,并将监控数据发送给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

在一个实施例中,监控拦截器可从本地队列的消息队列中获取监控数据,并获取监控数据对应的用户请求接收时刻。通过将用户接收时刻转换为时间戳,利用HashCode算法将时间戳转换为哈希值,将哈希值与分布式消息队列的队列数进行取模运算,可得到与监控数据对应的分布式消息队列的队列编号。在获取监控数据对应的分布式消息队列的队列编号后,监控拦截器可将监控数据通过Http(Hyper Text Transfer Protocol,超文本传输协议)方式异步批量传输给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

S308,获取线程标识对应的队列编号,从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

在一个实施例中,监控系统中有处理监控数据的线程,监控系统获取线程标识后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可获取与线程标识对应的分布式消息队列的队列编号。根据线程标识对应的分布式消息队列的队列编号,监控系统可获取与线程标识对应的分布式消息队列中的监控数据。其中,线程标识是用于唯一标识线程身份的字符串。该字符串可包括数字、字母、字符等至少一种。监控系统中每个线程标识都有对应的分布式消息队列的队列编号,监控系统在获取线程标识后,获取该线程标识对应的分布式消息队列中的监控数据。

S310,将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理。

在一个实施例中,监控系统在获取监控数据后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理。其中,监控系统中一个线程标识可对应多个分布式消息队列的队列编号,各线程标识所对应的分布式消息队列的队列编号不相同。即监控系统中一个线程可处理多个分布式消息队列中的监控数据,每个线程所处理的分布式消息队列中的监控数据不相同,一个分布式消息队列中的监控数据在一个固定的线程中处理。

上述业务监控方法,在获取监控数据后,获取监控数据对应的分布式消息队列编号,并将监控数据发送给对应编号的分布式消息队列存储。通过引入分布式消息队列、将监控数据存储于分布式消息队列,实现监控系统从分布式消息队列中获取监控数据,并对监控数据进行处理。通过将监控系统与存储监控数据的本地队列解耦,避免了在监控系统不稳定时,本地队列发送的监控数据丢失的情况。

在一个实施例中,上述业务监控方法还包括:获取线程对监控数据的处理结果;将线程对监控数据的处理结果存储于数据库,以使监控后台可读取并展示数据库中数据。

在一个实施例中,线程对监控数据的处理结果可包括QPS(Query Per Second,每秒查询率)、错误数和响应时间等。其中,QPS是指每秒用户访问的次数;错误数是指每分钟系统异常数,系统异常可包括处理用户请求异常、处理用户请求超时等;响应时间是指处理用户请求的时间,响应时间可通过用户请求信息中用户请求接收时刻与用户请求响应时刻计算获取。监控系统在获取线程对监控数据的处理结果后,可将监控数据的处理结果存储于数据库中。监控后台可读取数据库中存储的监控数据的处理结果,并将监控数据的处理结果可视化展示。

上述业务监控方法,将线程对监控数据的处理结果存储于数据库中,使监控后台可读取数据库中监控数据的处理结果,并将监控数据的处理结果可视化展示,有利于了解系统健康状况和及时发现系统问题,在出现系统问题时实现秒级告警。

在一个实施例中,图3中步骤S306获取与监控数据对应的分布式消息队列的队列编号包括:获取监控数据对应的用户请求接收时刻和分布式消息队列集群中分布式消息队列的队列数;将用户请求接收时刻转换为时间戳;根据时间戳和分布式消息队列的队列数获取与监控数据对应的分布式消息队列的队列编号。

在一个实施例中,监控拦截器可读取分布式消息队列集群中分布式消息队列的队列数;监控拦截器还可从本地队列的消息队列中获取监控数据,从监控数据中读取用户请求接收时刻,将用户请求接收时刻转换为时间戳,通过HashCode算法计算时间戳对应的哈希值,将时间戳对应的哈希值与分布式消息队列的队列数进行取模运算,可得到监控数据对应的分布式消息队列的队列编号。即【监控数据对应的分布式消息队列的队列编号】=【HashCode(用户请求接收时刻对应的时间戳)】mod【分布式消息队列的队列数】。例如,监控数据对应的用户请求接收时刻为2016年12月12日19时24分44秒,将用户请求接收时刻转换为时间戳为1481628284951,通过HashCode算法计算时间戳对应的哈希值为125421857,分布式消息队列集群中分布式消息队列的队列数为8,则将哈希值对分布式消息队列的队列数进行取模运算得到取模结果为1,即该监控数据对应的分布式消息队列的队列编号为1,监控拦截器可将该监控数据发送给队列编号为1的分布式消息队列进行存储。其中,用户请求接收时刻为同一分钟的监控数据所对应的分布式消息队列的队列编号相同,即用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中。

上述业务监控方法,获取监控数据对应的用户请求接收时刻后,将用户请求接收时刻转换为时间戳,通过时间戳和分布式消息队列的队列数来获取监控数据对应的分布式消息队列的编号,可实现用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中,有利于实现用户请求接收时刻为同一分钟的监控数据在同一台计算机中处理,保证了数据处理的精度。

在一个实施例中,图3中步骤S308从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据包括:根据预设的时间间隔从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

在一个实施例中,监控系统在获取线程标识后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可获取与线程标识对应的分布式消息队列的队列编号。根据线程标识对应的分布式消息队列的队列编号和预设的时间间隔,监控系统可定时从分布式消息队列集群中获取与线程标识对应的分布式消息队列中的监控数据。

在一个实施例中,线程标识对应的线程中包括子线程;图3中步骤S310将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理包括:获取子线程标识对应的队列编号;将与子线程标识对应的队列编号所对应的分布式消息队列中的监控数据分配给子线程标识对应的子线程处理。

在一个实施例中,监控系统中各线程中包括子线程,各子线程有子线程标识,子线程标识是用于唯一标识子线程身份的字符串。该字符串可包括数字、字母、字符等至少一种。且一个线程中包括多个子线程,一个子线程标识可对应多个分布式消息队列的队列编号,各子线程标识所对应的分布式消息队列的队列编号不相同。监控系统获取线程中各子线程标识后,根据预配置的子线程标识与分布式消息队列的队列编号之间的对应关系,可获取与子线程标识对应的分布式消息队列的队列编号。根据上述分布式消息队列的队列编号,监控系统可获取与子线程标识对应的分布式消息队列中的监控数据,并将分布式消息队列中的监控数据分配给子线程标识对应的子线程处理。其中,分布式消息队列的队列数≥监控系统中总子线程数。通常情况下,监控系统中各线程中包括的子线程数量相同,即分布式消息队列的队列数≥监控系统中线程数*单个线程中子线程数。当分布式消息队列的队列数=监控系统中线程数*单个线程中子线程数时,监控系统可实现一个子线程处理一个分布式消息队列中的监控数据。

上述业务监控方法,根据子线程标识与分布式消息队列的队列编号之间的对应关系,可将获取的分布式消息队列中监控数据分配给对应的子线程处理。通过每个子线程处理指定的分布式消息队列中监控数据,实现监控系统中每个子线程都在处理监控数据,提高了监控系统处理数据的效率。

在一个实施例中,上述业务监控方法还包括:若检测到新增分布式消息队列和新增线程;建立新增分布式消息队列的队列编号与新增线程的线程标识之间的对应关系。

在一个实施例中,当QPS增加时,可增加分布式消息队列节点和线程节点。若服务器检测到新增分布式消息队列节点和新增线程节点,可获取新增分布式消息队列的队列编号、新增线程的线程标识,并将新增线程的线程标识与新增分布式消息队列的队列编号对应,即新增的线程从新增的分布式消息队列中获取监控数据并进行处理。

上述业务监控方法,在用户请求量增加时,可自动建立新增的分布式消息队列与新增线程之间的对应关系。即在用户请求量增加时,可通过扩展分布式消息队列数和线程数来提高监控系统处理数据的能力,提高了监控系统处理数据的效率。

在一个实施例中,如图4所示,服务器中应用网关上部署有监控拦截器,监控拦截器可拦截服务器接收的用户请求和服务器对用户请求的响应,并记录用户请求信息。监控拦截器将用户请求信息封装为监控数据存储于本地队列的消息队列中,并获取监控数据对应的分布式消息队列的队列编号。具体为监控拦截器获取监控数据对应的用户请求接收时刻,将用户接收时刻转换为时间戳,利用HashCode算法将时间戳转换为哈希值,将哈希值与分布式消息队列的队列数进行取模运算,进而得到与监控数据对应的分布式消息队列的队列编号。在获取监控数据对应的分布式消息队列的队列编号后,监控拦截器将监控数据通过Http方式异步批量传输给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。其中,用户请求接收时刻为同一分钟的监控数据所对应的分布式消息队列的队列编号相同,即用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中。监控系统中包括Master线程1和Master线程2,Master线程1中包括Slave线程1和Slave线程2,Master线程2中包括Slave线程3和Slave线程4。根据预配置的Slave线程标识与分布式消息队列的队列编号之间的对应关系,可得到Slave线程1对应分布式消息队列1和分布式消息队列2;Slave线程2对应分布式消息队列3和分布式消息队列4;Slave线程3对应分布式消息队列5和分布式消息队列6;Slave线程4对应分布式消息队列7和分布式消息队列8。则监控系统中Master线程1对应的分布式消息队列1、分布式消息队列2、分布式消息队列3和分布式消息队列4;Master线程2对应的分布式消息队列5、分布式消息队列6、分布式消息队列7和分布式消息队列8。监控系统获取分布式消息队列中的监控数据后,将分布式消息队列1、分布式消息队列2、分布式消息队列3和分布式消息队列4中的监控分数分配给Master线程1;分布式消息队列5、分布式消息队列6、分布式消息队列7和分布式消息队列8中的监控分数分配给Master线程2。Master线程1再将分布式消息队列1和分布式消息队列2中监控数据分配给Slave线程1处理;将分布式消息队列3和分布式消息队列4中监控数据分配给Slave线程2处理。Master线程2再将分布式消息队列5和分布式消息队列6中监控数据分配给Slave线程3处理;将分布式消息队列7和分布式消息队列8中监控数据分配给Slave线程4处理。

上述业务监控方法,在获取监控数据后,获取监控数据对应的分布式消息队列编号,并将监控数据发送给对应编号的分布式消息队列存储。通过引入分布式消息队列、将监控数据存储于分布式消息队列,实现监控系统从分布式消息队列中获取监控数据,并对监控数据进行处理。通过将监控系统与存储监控数据的本地队列解耦,避免了在监控系统不稳定时,本地队列发送的监控数据丢失的情况。

图5为一个实施例中业务监控装置的结构框图。如图5所示,一种为实现图3中业务监控方法所架构的虚拟装置,包括:

获取模块502,用于获取用户请求信息。

封装模块504,用于将用户请求信息封装为监控数据。

数据存储模块506,用于获取与监控数据对应的分布式消息队列的队列编号,并将监控数据发送给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

数据获取模块508,用于获取线程标识对应的队列编号,从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

分配模块510,用于将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理。

上述业务监控装置,在获取监控数据后,获取监控数据对应的分布式消息队列编号,并将监控数据发送给对应编号的分布式消息队列存储。通过引入分布式消息队列、将监控数据存储于分布式消息队列,实现监控系统从分布式消息队列中获取监控数据,并对监控数据进行处理。通过将监控系统与存储监控数据的本地队列解耦,避免了在监控系统不稳定时,本地队列发送的监控数据丢失的情况。

图6为一个实施例中数据存储模块506的结构框图。在一个实施例中,用户请求信息中包括用户请求接收时刻;数据存储模块506包括:

获取单元602,用于获取监控数据对应的用户请求接收时刻和分布式消息队列集群中分布式消息队列的队列数。

转换单元604,用于将用户请求接收时刻转换为时间戳。

计算单元606,用于根据时间戳和分布式消息队列的队列数获取与监控数据对应的分布式消息队列的队列编号。

存储单元608,用于将监控数据发送给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

上述业务监控装置,获取监控数据对应的用户请求接收时刻后,将用户请求接收时刻转换为时间戳,通过时间戳和分布式消息队列的队列数来获取监控数据对应的分布式消息队列的编号,可实现用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中,有利于实现用户请求接收时刻为同一分钟的监控数据在同一台计算机中处理,保证了数据处理的精度。

在一个实施例中,数据获取模块508还用于获取线程标识对应的队列编号,根据预设的时间间隔从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

在一个实施例中,线程标识对应的线程中包括子线程;分配模块510还用于获取子线程标识对应的队列编号;将与子线程标识对应的队列编号所对应的分布式消息队列中的监控数据分配给子线程标识对应的子线程处理。

上述业务监控装置,根据子线程标识与分布式消息队列的队列编号之间的对应关系,可将获取的分布式消息队列中监控数据分配给对应的子线程处理。通过每个子线程处理指定的分布式消息队列中监控数据,实现监控系统中每个子线程都在处理监控数据,提高了监控系统处理数据的效率。

图7为另一个实施例中业务监控装置的结构框图。如图7所示,一种业务监控装置,包括获取模块702、封装模块704、数据存储模块706、数据获取模块708、分配模块710和对应模块712。其中获取模块702、封装模块704、数据存储模块706、数据获取模块708和分配模块710与图5中对应的模块功能相同。

对应模块712,用于若检测到新增分布式消息队列和新增线程;建立新增分布式消息队列的队列编号与新增线程的线程标识之间的对应关系。

上述业务监控装置,在用户请求量增加时,可自动建立新增的分布式消息队列与新增线程之间的对应关系。即在用户请求量增加时,可通过扩展分布式消息队列数和线程数来提高监控系统处理数据的能力,提高了监控系统处理数据的效率。

图8为另一个实施例中业务监控装置的结构框图。如图8所示,一种业务监控装置,包括获取模块802、封装模块804、数据存储模块806、数据获取模块808、分配模块810和结果存储模块812。其中获取模块802、封装模块804、数据存储模块806、数据获取模块808和分配模块810与图5中对应的模块功能相同。

结果存储模块812,用于获取线程对监控数据的处理结果;将线程对监控数据的处理结果存储于数据库,以使监控后台可读取并展示数据库中数据。

上述业务监控装置,将线程对监控数据的处理结果存储于数据库中,使监控后台可读取数据库中监控数据的处理结果,并将监控数据的处理结果可视化展示,有利于了解系统健康状况和及时发现系统问题,在出现系统问题时实现秒级告警。

上述业务监控装置中各个模块的划分仅用于举例说明,在其他实施例中,可将业务监控装置按照需要划分为不同的模块,以完成上述业务监控装置的全部或部分功能。

一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序(指令),处理器执行程序时实现以下步骤(1)至(5):

(1)获取用户请求信息。

在一个实施例中,服务器中应用网关上部署有监控拦截器,监控拦截器可拦截服务器接收的用户请求和服务器对用户请求的响应,并记录用户请求信息。其中用户请求信息可包括服务器接收用户请求的时刻,即用户请求接收时刻;服务器对用户请求作出响应的时刻,即用户请求响应时刻;用户请求调用的服务模块,即服务器上用于处理用户请求的模块;用户请求的服务节点,即服务器上用于处理用户请求的服务器地址;用户请求方IP;用户请求的URL;被请求方名称等。

(2)将用户请求信息封装为监控数据。

在一个实施例中,监控拦截器可将获取的用户请求信息封装为监控数据,并将监控数据存储于本地队列的消息队列中。

(3)获取与监控数据对应的分布式消息队列的队列编号,并将监控数据发送给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

在一个实施例中,监控拦截器可从本地队列的消息队列中获取监控数据,并获取监控数据对应的用户请求接收时刻。通过将用户接收时刻转换为时间戳,利用HashCode算法将时间戳转换为哈希值,将哈希值与分布式消息队列的队列数进行取模运算,可得到与监控数据对应的分布式消息队列的队列编号。在获取监控数据对应的分布式消息队列的队列编号后,监控拦截器可将监控数据通过Http方式异步批量传输给分布式消息队列集群中与队列编号对应的分布式消息队列进行存储。

(4)获取线程标识对应的队列编号,从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

在一个实施例中,监控系统中有处理监控数据的线程,监控系统获取线程标识后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可获取与线程标识对应的分布式消息队列的队列编号。根据线程标识对应的分布式消息队列的队列编号,监控系统可获取与线程标识对应的分布式消息队列中的监控数据。其中,线程标识是用于唯一标识线程身份的字符串。该字符串可包括数字、字母、字符等至少一种。监控系统中每个线程标识都有对应的分布式消息队列的队列编号,监控系统在获取线程标识后,获取该线程标识对应的分布式消息队列中的监控数据。

(5)将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理。

在一个实施例中,监控系统在获取监控数据后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理。其中,监控系统中一个线程标识可对应多个分布式消息队列的队列编号,各线程标识所对应的分布式消息队列的队列编号不相同。即监控系统中一个线程可处理多个分布式消息队列中的监控数据,每个线程所处理的分布式消息队列中的监控数据不相同,一个分布式消息队列中的监控数据在一个固定的线程中处理。

上述计算机设备,在获取监控数据后,获取监控数据对应的分布式消息队列编号,并将监控数据发送给对应编号的分布式消息队列存储。通过引入分布式消息队列、将监控数据存储于分布式消息队列,实现监控系统从分布式消息队列中获取监控数据,并对监控数据进行处理。通过将监控系统与存储监控数据的本地队列解耦,避免了在监控系统不稳定时,本地队列发送的监控数据丢失的情况。

在一个实施例中,上述计算机设备中处理器执行程序时还实现以下步骤:获取线程对监控数据的处理结果;将线程对监控数据的处理结果存储于数据库,以使监控后台可读取并展示数据库中数据。

在一个实施例中,线程对监控数据的处理结果可包括QPS、错误数和响应时间等。其中,QPS是指每秒用户访问的次数;错误数是指每分钟系统异常数,系统异常可包括处理用户请求异常、处理用户请求超时等;响应时间是指处理用户请求的时间,响应时间可通过用户请求信息中用户请求接收时刻与用户请求响应时刻计算获取。监控系统在获取线程对监控数据的处理结果后,可将监控数据的处理结果存储于数据库中。监控后台可读取数据库中存储的监控数据的处理结果,并将监控数据的处理结果可视化展示。

上述计算机设备,将线程对监控数据的处理结果存储于数据库中,使监控后台可读取数据库中监控数据的处理结果,并将监控数据的处理结果可视化展示,有利于了解系统健康状况和及时发现系统问题,在出现系统问题时实现秒级告警。

在一个实施例中,上述计算机设备中处理器执行程序时实现的步骤:获取与监控数据对应的分布式消息队列的队列编号包括:获取监控数据对应的用户请求接收时刻和分布式消息队列集群中分布式消息队列的队列数;将用户请求接收时刻转换为时间戳;根据时间戳和分布式消息队列的队列数获取与监控数据对应的分布式消息队列的队列编号。

在一个实施例中,监控拦截器可读取分布式消息队列集群中分布式消息队列的队列数;监控拦截器还可从本地队列的消息队列中获取监控数据,从监控数据中读取用户请求接收时刻,将用户请求接收时刻转换为时间戳,通过HashCode算法计算时间戳对应的哈希值,将时间戳对应的哈希值与分布式消息队列的队列数进行取模运算,可得到监控数据对应的分布式消息队列的队列编号。即【监控数据对应的分布式消息队列的队列编号】=【HashCode(用户请求接收时刻对应的时间戳)】mod【分布式消息队列的队列数】。其中,用户请求接收时刻为同一分钟的监控数据所对应的分布式消息队列的队列编号相同,即用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中。

上述计算机设备,获取监控数据对应的用户请求接收时刻后,将用户请求接收时刻转换为时间戳,通过时间戳和分布式消息队列的队列数来获取监控数据对应的分布式消息队列的编号,可实现用户请求接收时刻为同一分钟的监控数据存储于同一个分布式消息队列中,有利于实现用户请求接收时刻为同一分钟的监控数据在同一台计算机中处理,保证了数据处理的精度。

在一个实施例中,上述计算机设备中处理器执行程序时实现的步骤:从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据包括:根据预设的时间间隔从分布式消息队列集群中获取与队列编号对应的分布式消息队列中的监控数据。

在一个实施例中,监控系统在获取线程标识后,根据预配置的线程标识与分布式消息队列的队列编号之间的对应关系,可获取与线程标识对应的分布式消息队列的队列编号。根据线程标识对应的分布式消息队列的队列编号和预设的时间间隔,监控系统可定时从分布式消息队列集群中获取与线程标识对应的分布式消息队列中的监控数据。

在一个实施例中,线程标识对应的线程中包括子线程;上述计算机设备中处理器执行程序时实现的步骤:将与队列编号对应的分布式消息队列中的监控数据分配给线程标识对应的线程处理包括:获取子线程标识对应的队列编号;将与子线程标识对应的队列编号所对应的分布式消息队列中的监控数据分配给子线程标识对应的子线程处理。

在一个实施例中,监控系统中各线程中包括子线程,各子线程有子线程标识,子线程标识是用于唯一标识子线程身份的字符串。该字符串可包括数字、字母、字符等至少一种。且一个线程中包括多个子线程,一个子线程标识可对应多个分布式消息队列的队列编号,各子线程标识所对应的分布式消息队列的队列编号不相同。监控系统获取线程中各子线程标识后,根据预配置的子线程标识与分布式消息队列的队列编号之间的对应关系,可获取与子线程标识对应的分布式消息队列的队列编号。根据上述分布式消息队列的队列编号,监控系统可获取与子线程标识对应的分布式消息队列中的监控数据,并将分布式消息队列中的监控数据分配给子线程标识对应的子线程处理。其中,分布式消息队列的队列数≥监控系统中总子线程数。通常情况下,监控系统中各线程中包括的子线程数量相同,即分布式消息队列的队列数≥监控系统中线程数*单个线程中子线程数。当分布式消息队列的队列数=监控系统中线程数*单个线程中子线程数时,监控系统可实现一个子线程处理一个分布式消息队列中的监控数据。

上述计算机设备,根据子线程标识与分布式消息队列的队列编号之间的对应关系,可将获取的分布式消息队列中监控数据分配给对应的子线程处理。通过每个子线程处理指定的分布式消息队列中监控数据,实现监控系统中每个子线程都在处理监控数据,提高了监控系统处理数据的效率。

在一个实施例中,上述计算机设备中处理器执行程序时还实现以下步骤:若检测到新增分布式消息队列和新增线程;建立新增分布式消息队列的队列编号与新增线程的线程标识之间的对应关系。

在一个实施例中,当QPS增加时,可增加分布式消息队列节点和线程节点。若服务器检测到新增分布式消息队列节点和新增线程节点,可获取新增分布式消息队列的队列编号、新增线程的线程标识,并将新增线程的线程标识与新增分布式消息队列的队列编号对应,即新增的线程从新增的分布式消息队列中获取监控数据并进行处理。

上述计算机设备,在用户请求量增加时,可自动建立新增的分布式消息队列与新增线程之间的对应关系。即在用户请求量增加时,可通过扩展分布式消息队列数和线程数来提高监控系统处理数据的能力,提高了监控系统处理数据的效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。

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

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