监控方法和系统与流程

文档序号:11286309阅读:155来源:国知局
本申请涉及互联网
技术领域
:,尤其涉及一种监控方法和系统。
背景技术
::在日常工作中,存在关键业务数据,例如:金融系统的汇率配置、基金交易日配置、银行系统利率配置等。如果关键业务数据变更而数据使用方未能及时感知到,导致的后果可能是严重的,例如:流量、订单量等大幅下降、甚至产生资损等。但是,目前的监控平台,通常都是针对服务器进行监控的,监控的内容是服务器的运行情况、内存、网络流量等。目前的监控平台无法实现对底层的关键业务数据的监控。技术实现要素:本申请旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本申请的一个目的在于提出一种监控方法,该方法可以实现对存储数据的监控,从而能够使得数据使用方及时获知数据的变更。本申请的另一个目的在于提出一种监控装置。为达到上述目的,本申请第一方面实施例提出的监控方法,包括:获取存储有数据的源表,所述源表是采用预设的定时周期从数据源中抽取的;在缓存 中已存储与所述源表对应的缓存表时,获取所述缓存表;比较所述源表中的数据和所述缓存表中的数据,得到比较结果;在所述比较结果是两者不一致时,向所述源表的数据使用方发送通知消息,所述通知消息用于通知数据已发生变更。本申请第一方面实施例提出的监控方法,通过比较源表和缓存表中的数据,可以实现对存储数据的监控,通过在数据发生变更时向数据使用方发送通知消息,可以使得数据使用方及时获知数据已发生变更。通过采用预设的定时周期抽取源表,可以提高稳定性。为达到上述目的,本申请第二方面实施例提出的监控系统,包括执行装置,所述执行装置包括:第一获取模块,用于获取存储有数据的源表,所述源表是采用预设的定时周期从数据源中抽取的;第二获取模块,用于在缓存中已存储与所述源表对应的缓存表时,获取所述缓存表;比较模块,用于比较所述源表中的数据和所述缓存表中的数据,得到比较结果;通知模块,用于在所述比较结果是两者不一致时,向所述源表的数据使用方发送通知消息,所述通知消息用于通知数据已发生变更。本申请第二方面实施例提出的监控装置,通过比较源表和缓存表中的数据,可以实现对存储数据的监控,通过在数据发生变更时向数据使用方发送通知消息,可以使得数据使用方及时获知数据已发生变更。通过采用预设的定时周期抽取源表,可以提高稳定性。本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。附图说明本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1是本申请一实施例提出的监控方法的流程示意图;图2是本申请实施例中监控系统的实现示意图;图3是本申请另一实施例提出的监控方法的流程示意图;图4是本申请另一实施例提出的监控方法的流程示意图;图5是本申请另一实施例提出的监控系统的结构示意图;图6是本申请另一实施例提出的监控系统的结构示意图;图7是本申请另一实施例提出的服务器的结构示意图。具体实施方式下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。图1是本申请一实施例提出的监控方法的流程示意图。参见图1,该方法包括:s11:获取存储有数据的源表,所述源表是采用预设的定时周期从数据源中抽取的。本实施例中,数据的监控采用定时任务触发机制,因此,可以预设定时周期,在达到定时周期时获取源表,以便监控数据是否发生变更。一些实施例中,源表可以采用三层分发技术。具体的,参见图2,监控系 统分为三层,分别是分离层(splitor)、加载层(loader)和执行层(executer)。其中,分离层用于对数据源进行分块,例如,将每个数据库内的源表分别作为一个数据块,假设用n个数据库,则可以分为n个数据块。加载层用于从分离层抽取源表,其中,加载层可以采用并行处理方式,例如,加载层可以并行抽取分别来自每个数据库中的n个源表。进一步的,采用定时任务触发机制时,加载层可以先判断是否达到预设的定时周期,如果达到定时周期,则并行的从每个数据库中获取一个源表。如果没有达到定时周期,则等待直至达到定时周期。具体的,可以采用precheck()方法,该方法中可以设置定时周期等参数,以判断是否达到预设的定时周期。进一步的,设置precheck()方法中的参数时,可以直接将设置的参数写入内存(该方式可以称为drm方式)。以服务器为例,在设置服务器需要的参数时,通常是服务器从外部存储介质等位置读取参数,之后写入内存,在需要修改参数时,需要先修改存储位置的参数,再重启服务器重新将参数写入内存。而本实施例中,采用直接将参数写入内存的方式,当需要修改参数时,也是将修改后的参数直接写入内存,从而提高效率,也不需要重启服务器。加载层根据定时周期从分离层抽取源表后,可以将源表下发给执行层。执行层用于接收加载层发送的源表,并进行逻辑处理,以监控源表中的数据是否发生变更。具体的,执行层的逻辑处理流程即如图1(或之后的图3、图4)所示。进一步的,在具体实施时,对应不同的业务需求,可以将执行层的公共的处理逻辑封装为一个类,该类可以称为abstractdbtablemonitorexecutor,不同的业务需求下,在生成自身的处理逻辑时,可以对应自身需要监控的源表 继承这个类,从而可以仅做较少工作就可以实现对新增的源表的监控。具体的,参见图2,以三种源表的监控为例,三种源表的处理逻辑分别用第一源表处理逻辑21、第二源表处理逻辑22和第三源表处理逻辑23表示,其中,第一源表处理逻辑可以具体是对余额宝商户监控(yebsaleinstmonitorexecutor)、第二源表处理逻辑可以具体是对余额宝系统参数监控(yebsysparammonitorexecutor)、第三源表处理逻辑可以具体是对非工作日监控(noworkdaymonitorexecutor)。这三种处理逻辑都是通过继承公共处理逻辑(abstractdbtablemonitorexecutor)24得到的。公共处理逻辑(abstractdbtablemonitorexecutor)24可以是继承用于数据抽取监控的类(abstractmonitorexecutor)25得到的。另外,用于数据抽取监控的类(abstractmonitorexecutor)25还可以与用于监控处理的类(monitordataschedulehandler)26关联,用于监控处理的类(monitordataschedulehandler)26用于生成分离层、加载层和执行层。s12:在缓存中已存储与所述源表对应的缓存表时,获取所述缓存表。一些实施例中,参见图3,执行层接收到加载层发送的源表后,在s12之前还可以包括:s15:判断缓存中是否已存储与所述源表对应的缓存表。其中,不同的数据表可以采用不同的表标识进行区分,假设当前处理的一个源表的表标识是第一标识,则如果缓存中已存储表标识是第一标识的缓存表时,则可以确定缓存中已存储与所述源表对应的缓存表,否则未存储。当缓存中已存储与源表对应的缓存表后,可以获取该缓存表。进一步的,在将源表存储到缓存中时,可以记录每个缓存表的更新时间, 以便在获取缓存表时,获取更新时间最近的与源表对应的缓存表。另一方面,如图3所示,该方法还可以包括:s16:在缓存中未存储与所述源表对应的缓存表时,将所述源表存储到缓存中,以得到所述源表对应的缓存表。例如,当前处理的源表是第一源表,如果缓存中未存储第一源表,则可以将第一源表存储到缓存中,从而在后续流程中,假设后续流程再次处理第一源表时,由于之前已经将第一源表存储到缓存中,因此可以在缓存中获取到第一源表对应的缓存表。s13:比较所述源表中的数据和所述缓存表中的数据,得到比较结果。在获取到源表和对应的缓存表中,可以比较两个表中的数据。在比较两个表中的数据时,可以采用逐条记录的比较方式。其中,每个表由一条或多条记录组成,分别比较每条记录在两个表中是否相同。其中,比较两个表中的记录可以具体包括:在源表和缓存表中存在匹配的记录时,分别从源表和缓存表中获取匹配的两条记录,并一一比对两条记录中相应的字段值,如果任一个字段值在源表和缓存表中不是对应相同,则得到比较结果是两者不一致;此时,该记录是被修改的。以源表为基准,如果源表中的记录不在缓存表中,则得到比较结果是两者不一致;此时,该记录是新增的。以缓存表为基准,如果缓存表中的记录不在源表中,则得到比较结果是两者不一致;此时,该记录是删除的。其中,源表和缓存表中的每条记录都包含记录标识,以便根据该记录标识确定源表和缓存表中是否存在匹配的记录。例如,源表中每条记录的数据结构可以如表1所示,缓存表中每条记录的数据结构可以如表2所示。表1字段名类型说明备注idbigint主键自动增长param_keyvarchar参数键值param_valuevarchar参数值memovarchar注释gmt_createdate创建时间gmt_modifydate修改时间表2其中,在源表中用“param_key”作为记录标识,在缓存表中用“data_key”作为记录标识,当源表中记录a的param_key与缓存表中记录b的data_key相同时,则表明记录a和记录b是源表和缓存表中匹配的两条记录。如果源表中记录a的param_key不存在于缓存表的data_key中,则表明记录a是新增的。如果缓存表中记录b的data_key不存在于源表的param_key中,则表明记录b是删除的。进一步的,当源表和缓存表中存在匹配的两条记录时,假设这两条记录分别用记录a和记录b表示,则可以一一比较需要比较的每个字段。其中,需要 比较的字段包括记录a的全部字段以及从记录b中提取的记录a的原始内容。其中,在将源表存储到缓存中时,可以是将源表的每条记录的全部内容(如表1的全部6个字段的内容)存储在缓存表的每条记录的“data_value”字段中,从而在比较源表中的记录a和缓存表中的记录b时,可以先从记录b的“data_value”字段中获取记录a的原始内容,再与当前的记录a进行字段的一一比较,以得到比较结果。进一步的,在对记录a的全部字段以及从记录b中提取的记录a的原始内容进行比较时,可以是编写代码依次对每个字段进行比较,或者,也可以采用java反射机制。java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java反射机制。通过采用java反射机制,可以具有较好的兼容性,后续源表新增或者修改字段,代码不需要进行改造。s14:在所述比较结果是两者不一致时,向所述源表的数据使用方发送通知消息,所述通知消息用于通知数据已发生变更。当记录是新增、删除或记录中的一个或一些字段改变后,都可以向数据使用方发送通知消息。数据使用方(如业务人员)接收到该通知消息后,可以获知数据已发生变更,之后可以重新检查数据、排除故障、优化业务等后续相关处理。另一方面,当源表和缓存表中的数据一致时,可以结束流程。一些实施例中,参见图4,该方法还可以包括:s17:获取数据使用方的用户信息。相应的,可以根据用户信息,向对应的数据使用方发送通知消息。其中,用户信息可以是预先配置的。进一步的,在配置时可以采用上述的drm方式,将用户信息直接写入内存。用户信息例如包括:手机号、邮箱等。相应的,发送通知消息可以包括:调用预设的能够发送邮件的接口(如gotone接口),并通过所述接口,以邮件形式向所述邮箱号对应的邮箱发送通知消息;和/或,通过预设的能够发送短信的平台,以短信形式向所述手机号对应的手机发送通知消息。上述的通知消息中可以具体包括发生变更的数据内容。例如,执行层在获取比较结果是不一致时,将源表和缓存表中的差异信息写入监控系统的监控日志中,监控系统根据监控日志向用户的手机号发送包含差异信息的通知消息。可以理解的是,当源表为多个时,执行层在处理上述流程时可以采用并行方式。例如,并行的判断第一源表、第二源表等源表内的数据是否发生变更,并在发生变更时进行通知。其中,针对每个源表的处理流程可以如图1、图3或图4所示。本实施例中,通过比较源表和缓存表中的数据,可以实现对存储数据的监控,通过在数据发生变更时向数据使用方发送通知消息,可以使得数据使用方及时获知数据已发生变更。通过采用预设的定时周期抽取源表,可以提高稳定性,例如,如果定时任务出错或者系统异常,可以定时重试。通过并发获取源表及处理,可以并发对多个源表进行处理,保证了高效性。图5是本申请另一实施例提出的监控系统的结构示意图。参见图5,该系统包括:执行装置51,执行装置51包括:第一获取模块511、第二获取模块 512、比较模块513和通知模块514。第一获取模块511,用于获取存储有数据的源表,所述源表是采用预设的定时周期从数据源中抽取的;第二获取模块512,用于在缓存中已存储与所述源表对应的缓存表时,获取所述缓存表;比较模块513,用于比较所述源表中的数据和所述缓存表中的数据,得到比较结果;通知模块514,用于在所述比较结果是两者不一致时,向所述源表的数据使用方发送通知消息,所述通知消息用于通知数据已发生变更。一些实施例中,参见图6,该系统还可以包括:加载装置52,用于根据预设的定时周期从数据源抽取源表,并发送给执行装置51。相应的,第一获取模块511具体用于接收加载装置52发送的源表。一些实施例中,参见图6,该系统还包括:分离装置53,用于将数据源拆分为多个数据块。相应的,加载装置52具体用于:根据预设的定时周期,并行抽取分离装置53得到的每个数据块中的源表。一些实施例中,参见图6,执行装置51还包括:存储模块515,用于在缓存中未存储与所述源表对应的缓存表时,将所述源表存储到所述缓存中,以得到所述源表对应的缓存表。可选的,所述比较模块513具体用于:在源表和缓存表中存在匹配的记录时,分别从源表和缓存表中获取匹配的两条记录,并一一比对两条记录中相应的字段值,如果任一个字段值在源表和 缓存表中不是对应相同,则得到比较结果是两者不一致;以源表为基准,如果源表中的记录不在缓存表中,则得到比较结果是两者不一致;以缓存表为基准,如果缓存表中的记录不在源表中,则得到比较结果是两者不一致。一些实施例中,参见图6,所述执行装置51还包括:第三获取模块516,用于获取所述数据使用方的用户信息;所述通知模块513具体用于:在所述比较结果是两者不一致时,根据所述用户信息,向对应的数据使用方发送通知消息。可选的,所述用户信息包括:邮箱号和/或手机号,所述通知模块513具体用于:调用预设的能够发送邮件的接口,并通过所述接口,以邮件形式向所述邮箱号对应的邮箱发送通知消息;和/或,通过预设的能够发送短信的平台,以短信形式向所述手机号对应的手机发送通知消息。可选的,所述用户信息和/或定时周期是直接写入内存的。可以理解的是,本实施例的系统与方法实施例是对应的,具体内容可以参见方法实施例中的相关描述,在此不再详细说明。本实施例中,通过比较源表和缓存表中的数据,可以实现对存储数据的监控,通过在数据发生变更时向数据使用方发送通知消息,可以使得数据使用方及时获知数据已发生变更。通过采用预设的定时周期抽取源表,可以提高稳定性,例如,如果定时任务出错或者系统异常,可以定时重试。通过并发获取源表及处理,可以并发对多个源表进行处理,保证了高效性。图7是本申请另一实施例提出的服务器的结构示意图。参见图7,该服务器70包括:壳体71、处理器72、存储器73、电路板74和电源电路75,其中,电路板74安置在壳体71围成的空间内部,处理器72和存储器73设置在电路板74上;电源电路75,用于为服务器的各个电路或器件供电;存储器73用于存储可执行程序代码;处理器72通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:获取存储有数据的源表,所述源表是采用预设的定时周期从数据源中抽取的;在缓存中已存储与所述源表对应的缓存表时,获取所述缓存表;比较所述源表中的数据和所述缓存表中的数据,得到比较结果;在所述比较结果是两者不一致时,向所述源表的数据使用方发送通知消息,所述通知消息用于通知数据已发生变更。可选的,所述获取存储有数据的源表,包括:接收加载层发送的存储有数据的源表,所述源表是所述加载层根据预设的定时周期从数据源抽取的。可选的,加载层根据预设的定时周期从数据源抽取源表,包括:加载层根据预设的定时周期,在分离层拆分得到的多个数据块中,并行抽取每个数据块中的源表。可选的,还包括:在缓存中未存储与所述源表对应的缓存表时,将所述源表存储到所述缓存中,以得到所述源表对应的缓存表。可选的,所述比较所述源表中的数据和所述缓存表中的数据,得到比较结果,包括:在源表和缓存表中存在匹配的记录时,分别从源表和缓存表中获取匹配的两条记录,并一一比较需要比较的每个字段,如果任一个字段在源表和缓存表中不是对应相同,则得到比较结果是两者不一致;以源表为基准,如果源表中的记录不在缓存表中,则得到比较结果是两者不一致;以缓存表为基准,如果缓存表中的记录不在源表中,则得到比较结果是两者不一致。可选的,还包括:获取所述数据使用方的用户信息;所述向所述源表的数据使用方发送通知消息,包括:根据所述用户信息,向对应的数据使用方发送通知消息。可选的,所述用户信息包括:邮箱号和/或手机号,所述根据所述用户信息,向对应的数据使用方发送通知消息,包括:调用预设的能够发送邮件的接口,并通过所述接口,以邮件形式向所述邮箱号对应的邮箱发送通知消息;和/或,通过预设的能够发送短信的平台,以短信形式向所述手机号对应的手机发送通知消息。可选的,所述用户信息是直接写入内存的。可以理解的是,本实施例的内容与方法实施例是对应的,具体内容可以参见方法实施例中的相关描述,在此不再详细说明。本实施例中,通过比较源表和缓存表中的数据,可以实现对存储数据的监控,通过在数据发生变更时向数据使用方发送通知消息,可以使得数据使用方及时获知数据已发生变更。通过采用预设的定时周期抽取源表,可以提高稳 定性,例如,如果定时任务出错或者系统异常,可以定时重试。通过并发获取源表及处理,可以并发对多个源表进行处理,保证了高效性。需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属
技术领域
:的技术人员所理解。应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。本
技术领域
:的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1