数据分层监控系统及监控方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据分层监控系统及方法。
背景技术
使用网站对后台数据进行监控,最常采用的方式是由网站直接访问原始数据相关的库表。但是通过网站进行访问时,访问的频率和来源很难控制,过多的提交请求会过多地占用数据库的IO和CPU等资源,不仅影响监控本身的效率,也对应用程序有不利的影响。
现有的两种访问方式分别是:
方式一、每次从网站提交请求时,直接从原始数据中进行采集和计算。其缺点在于会增加数据库重复操作的负担。
方式二、添加作业,让数据库定时从原始数据中计算出结果,存在新表中。此方式能减少方式一中重复操作的负担,但是监控的实时性较差;另一方面,如果没有提交请求,作业也会执行,进行没必要的操作。
上述两种方式都存在不足,有待于改进。
发明内容
本发明的主要目的在于公开一种数据分层监控系统及监控方法,以解决网站等访问终端频繁地访问数据所造成的占用数据库的IO和CPU等资源的缺陷。
为达上述目的,本发明公开的数据分层监控系统包括第一监控主机和第二监控主机,所述第一监控主机设置有第一中央处理器及其连接的存储原始数据的第一数据库或第一存储器,所述第二监控主机设置有第二中央处理器及其连接的存储监控表数据的第二存储器,所述第二中央处理器与第一中央处理器及外部的访问终端连接,所述第一中央处理器与所述第二存储器连接以根据所述第一中央处理器的指示动态更新所述监控表数据。
可选的,上述外部的访问终端为WEB服务器。
与上述数据分层监控系统相对应的,本发明还公开一种数据分层监控方法,包括:
第一监控主机完成原始数据的采集和计算,并写入第二监控主机上的监控表,供所有的终端访问;
第二监控主机设置监控表的状态,使其维持在一段时间内有效,当且只有当其接收到数据访问请求且当前监控表失效时才使令第一监控主机再一次完成原始数据的采集和计算并以此更新监控表。
与现有技术相比,本发明实施例至少具有以下优点:
基于本发明的数据分层监控系统及方法,第一监控主机可用于完成原始数据的采集和计算,并写入第二监控主机上的监控表,供所有的终端访问;而第二监控主机则可以灵活设置监控表的状态,使其维持在一段时间内有效,当且只有当其接收到数据访问请求且当前监控表失效时才使令第一监控主机再一次完成原始数据的采集和计算并以此更新监控表。藉此,第一监控主机和第二监控主机分工协作,外部访问终端只能访问第二监控主机上的监控表,且该监控表只有在超过预设的有效时长且有访问终端访问时才进行更新,以此实现兼顾数据更新的同时还极大地减少了对原始数据库的IO和CPU等资源的占用,有效地减少了对原始数据表中无必要的扫描和计算,提高了监控的效率,降低了服务器的压力。
附图说明
图1是本发明实施例公开的数据分层监控系统的架构框图;
图2是本发明实施例公开的数据分层监控方法流程图。
具体实施方式
下面结合说明书附图对本发明的具体实现方式做一详细描述。
本发明实施例公开一种数据分层监控系统。
如图1所示,该系统包括第一监控主机1和第二监控主机2,所述第一监控主机设置有第一中央处理器11及其连接的存储原始数据的第一数据库或第一存储器12,所述第二监控主机2设置有第二中央处理器21及其连接的存储监控表数据的第二存储器22,所述第二中央处理器与第一中央处理器及外部的访问终端连接,所述第一中央处理器与所述第二存储器连接以根据所述第一中央处理器的指示动态更新所述监控表数据。
基于本发明的架构,第一监控主机可用于完成原始数据的采集和计算,并写入第二监控主机上的监控表,供所有的终端访问;而第二监控主机则可以灵活设置监控表的状态,使其维持在一段时间内有效,当且只有当其接收到数据访问请求且当前监控表失效时才使令第一监控主机再一次完成原始数据的采集和计算并以此更新监控表。藉此,第一监控主机和第二监控主机分工协作,外部访问终端只能访问第二监控主机上的监控表,且该监控表只有在超过预设的有效时长且有访问终端访问时才进行更新,以此实现兼顾数据更新的同时还极大地减少了对原始数据库的IO和CPU等资源的占用,有效地减少了对原始数据表中无必要的扫描和计算,提高了监控的效率,降低了服务器的压力。
在执行过程中,第一中央处理器用于对原始数据进行采集和计算,写入监控表。监控表的结构根据监控的实际需求而定。第二中央处理器用于设定一个监控可允许的时间差datediff,考虑到是由网站进行的监控,时差可控制在2到10秒之间;并记录最后一次更新监控表的时间、当前监控表的状态(空闲,繁忙),其中监控表的结构可定为update_dt,working_status。当接收网站提交的监控请求时,该第二中央处理器查询监控表中update_dt及working_status,如果update_dt与当前时间差小于datediff,则直接访问监控表读取结果,如果update_dt与当前时间差大于datediff,而且working_status为空闲,则置working_status为繁忙,并指令第一中央处理器更新监控表,并在监控表更新完毕后置working_status为空闲并记录更新时间。
值得说明的是,本实施例中,上述第一监控主机和第二监控主机可以是双核CPU的一体机;作为一种简单变形,也可以由同一主机的两个监控线程实现上述监管功能。
实施例二
与上述实施例公开一种数据分层监控系统相对应的,本实施例公开一种数据分层监控方法,如图2所示,包括:
步骤S1、第一监控主机完成原始数据的采集和计算,并写入第二监控主机上的监控表,供终端访问。
步骤S2、第二监控主机设置监控表的状态,使其维持在一段时间内有效,当且仅当其接收到数据访问请求且当前监控表失效时才使令第一监控主机再一次完成原始数据的采集和计算并以此更新监控表。
通过本实施例,第一监控主机和第二监控主机分工协作,外部访问终端只能访问第二监控主机上的监控表,且该监控表只有在超过预设的有效时长且有访问终端访问时才进行更新,以此实现兼顾数据更新的同时还极大地减少了对原始数据库的IO和CPU等资源的占用,有效地减少了对原始数据表中无必要的扫描和计算,提高了监控的效率,降低了服务器的压力。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。