业务校验方法、装置及计算机可读存储介质
技术领域
本说明书实施例涉及互联网技术领域,尤其涉及一种业务校验方法、装置及计算机可读存储介质。
背景技术
随着互联网的快速发展,促进了互联网业务系统的不断改进和发展,为人们的生活带来极大的便利。为用户提供互联网业务的软件系统,在设计、开发和维护过程中,需要各种机制去保障系统正确运行。这些系统往往业务模式复杂,业务场景繁多,由于需处理的数据量庞大,很难去实时获知业务运行细节,构成了很大的业务风险。为了减少业务风险,目前常见的手段包括线下测试、监控体系、基于数仓的核对体系,这些方式都需要大量的人工成本。
发明内容
本说明书实施例提供及一种业务校验方法、装置及计算机可读存储介质。
第一方面,本说明书实施例提供一种业务校验方法,包括:
在目标业务对应的目标线程运行过程中,从所述目标线程运行产生的内存数据中抽取与预设业务校验规则对应的目标内存特征数据;
基于所述预设业务校验规则,对所述目标内存特征数据进行校验,获得校验结果;
按所述校验结果对应的预设策略对所述目标业务进行处理。
第二方面,本说明书实施例提供一种业务校验装置,包括:
抽取单元,用于在目标业务对应的目标线程运行过程中,从所述目标线程运行产生的内存数据中抽取与预设业务校验规则对应的目标内存特征数据;
校验单元,用于基于所述预设业务校验规则,对所述目标内存特征数据进行校验,获得校验结果;
处理单元,用于按所述校验结果对应的预设策略对所述目标业务进行处理。
第三方面,本说明书实施例提供一种业务校验装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行上述任一项所述方法的步骤。
第四方面,本说明书实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
本说明书实施例有益效果如下:
在本说明书实施例提供的业务校验方法中,针对目标业务预先配置了预设业务校验规则,该业务预设业务校验规则用于针对目标业务对应的目标线程运行过程中,对目标内存特征数据进行校验。所以,在目标业务对应的目标线程运行过程中,可以从目标线程运行产生的内存数据中抽取与该预设业务校验规则对应的目标内存特征数据,然后基于预设业务校验规则,对目标内存特征数据进行校验,获得校验结果,最后按校验结果对应的预设策略对目标业务进行处理。所以,能够按对应的校验规则实时、精细化地对业务中的内存数据进行校验,以实现对业务的校验,进而能有效支持业务实时的、精细化的预警和熔断的机制,降低业务风险。
附图说明
图1为本说明书实施例第一方面提供的业务校验方法流程图;
图2为本说明书实施例第二方面提供的业务校验装置结构示意图;
图3为本说明书实施例第三方面提供的业务校验装置结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
第一方面,本说明书实施例提供一种业务校验方法,请参考图1,包括S101-S103。
S101:在目标业务对应的目标线程运行过程中,从所述目标线程运行产生的内存数据中抽取与预设业务校验规则对应的目标内存特征数据;
S102:基于预设业务校验规则,对目标内存特征数据进行校验,获得校验结果;
S103:按校验结果对应的预设策略对目标业务进行处理。
具体的,本实施例中的业务校验方法主要应用于业务平台,对应的服务器处理业务平台中产生的各个业务。本实施例中的方法,可预先配置目标业务,也就是说,仅对配置的目标业务进行业务校验,比如:仅针对高频业务或关注的业务(如:转账业务)进行业务校验,这样的业务被配置为目标业务。当然,还可以针对业务平台产生的每个业务进行业务校验,即所有的业务都是目标业务。在具体实施过程中,目标业务可根据实际需要进行配置,在此,本申请不做限制。
进而,在通过步骤S101,检查到目标业务对应的目标线程运行时,获取针对该目标业务预先配置的预设业务校验规则。本实施例中,针对该目标业务,可对应多个预设业务校验规则,均可根据需要预先配置。比如:预先配置有通用业务校验规则,针对每个业务,均需要基于该通用业务校验规则对其进行校验。比如:预先配置有预设类型业务的类型业务校验规则,针对属于预设类型(如:支付类型)的每个业务,均需要基于该类型业务校验规则对其进行校验。又如:预先配置有专属业务校验规则,针对某一个具体的业务,基于该专属业务校验规则对其进行校验。
进而,如果目标应用程序存在对应的预设业务校验规则,需要抽取与该预设业务校验规则对应的目标内存特征数据。具体的,可通过如下步骤实现:
解析预设业务校验规则,确定预设业务校验规则需要校验的目标内存特征数据,从数据总线中抽取目标内存特征数据,数据总线中存储一个或多个预设节点中每个预设节点对应的内存数据,一个或多个预设节点为在目标进程中预先设置的节点。
具体的,在本实施例中,目标业务对应的目标线程中设计了多个预设节点,在每个预设节点处设置采集代码,用于采集该预设节点运行时产生的内存数据。这样,当目标线程运行至每个预设节点时,就可以采集该预设节点对应的内存数据存储至数据总线。
这样,针对目标业务对应的目标线程,在运行至各个预设节点时,该节点的内存数据采集至数据总线中的内存空间,该内存空间按预设节点在目标线程中运行的先后顺序存储各个预设节点的内存数据。这样,可将各个预设节点按运行逻辑执行的先后顺序串联,还原出该目标线程完整链路的内存数据,可探索的内存对象范畴扩大至软件运行路径,自动绘制出运行链路,绘制出来的系统链路粒度,和预设节点定义的粒度相同。在本实施例中,预设节点可以设置在目标线程中的关注的关键位置处,预设节点的数目可根据实际需要进行设定,在此,本申请不做限制。
通过这样的方式,数据总线中存储了所有预设节点对应的内存数据。进而,如果有针对该目标业务对应的预设业务校验规则,解析该预设业务校验规则,确定该预设业务校验规则所需要校验的目标内存特征数据,包括目标内存特征数据的获取路径,通过该获取路径即可从内存空间中读取到目标内存特征数据。进而,可通过步骤S102,对目标内存特征数据进行校验,获得校验结果。举例来说,如果目标业务为信用资产出资业务,预设业务校验规则包括不支持场景的拦截规则。具体的程序表达式为:
!((`bizProduct`=="ebpp10006"||string.startsWith(`bizProduct`,"fncpay")||string.startsWith(`bizProduct`,"ttc")||`bizProduct`=="pcrepay10002")&&((`payerTool`=="BANKCARD"&&`payerAssetTypeCode`!=nil&&(string.ends With(`payerAssetTypeCode`,"_CC")||string.contains(`payerAssetTypeCode`,"_CC_")))||`payerTool`=="PCREDIT"))。
该表达式表明信用资产出资业务中会将不支持的场景拦截掉,在读取到的目标内存特征数据为信用资产出资业务不支持的场景时,获得校验结果表明目标内存特征数据不满足预设业务校验规则。当然,在具体实施过程中,还可以对某些故障的内存特征数据设定拦截规则。又如:当目标业务中对应的支付方式仅设定为A,则当读取到的目标内存特征数据对应的支付方式不是A时,获得校验结果表明目标内存特征数据不满足预设业务校验规则。上面就是信用资产出资业务不支持场景的拦截规则。在具体实施过程中,预设业务校验规则可根据目标业务的具体需要进行设定,在此,本申请不做限制。
在通过步骤S102获得校验结果后,可通过步骤S103,按校验结果对应的预设策略对目标业务进行处理。具体的,如果校验结果表明目标内存特征数据不满足预设业务校验规则,拦截目标内存特征数据和/或输出第二提示信息,第二提示信息用于提示目标对象目标业务未通过预设业务校验规则的校验。
具体的,在本实施例中,如果校验结果表明目标内存特征数据不满足预设业务校验规则,沿用前述实施例,在读取到的目标内存特征数据为信用资产出资业务不支持的场景时,获得校验结果表明目标内存特征数据不满足预设业务校验规则,则可对目标内存特征数据进行拦截,使得当前运行的目标线程暂停或终止。当然,还可以输出针对目标业务不满足预设业务校验规则的相关提示信息,用于提示发起目标业务的目标对象进行相关修正,以满足该预设业务校验规则。这样,在目标业务进行过程中对其进行实时地业务校验,对不满足预设业务校验规则的目标业务实时地进行预警和/或熔断。
进一步,在本实施例中,还需要并行地实时地对该次运行的目标线程对应的内存数据中的特征数据进行抽取,将其保存至对应的目标内存中。可以对目标业务每次运行的内存特征进行记录,便于日志维护以及后续故障排查。进一步,在进行内存特征数据抽取时,可包括如下步骤:
在目标线程运行至每个预设节点时,采集该预设节点对应的内存数据存储至数据总线,目标线程中设置有一个或多个预设节点;确定每个预设节点对应的待抽取的内存特征数据的位置信息,基于每个预设节点中待抽取的内存特征数据的位置信息,按预设抽取方式从数据总线中抽取该预设节点对应的内存特征数据;对每次抽取到的内存特征数据进行校验,判断抽到的内存特征数据是否为新增内存特征数据,如果是,输出第一提示信息,第一提示信息用于提示目标对象设置与新增内存特征数据对应的新增预设业务校验规则,以使得在目标线程下一次运行时,能基于新增预设业务校验规则对新增内存特征数据进行校验。将新增内存特征数据添加至预设特征数据库。其中,基于每个预设节点对应的数据结构,确定该预设节点对应的待抽取的内存特征数据的位置信息。
具体的,在本实施例中,由前述实施例可知,当运行至目标线程中每个预设节点时,会将该节点的内存数据存储至数据总线,即:将内存数据注册进数据总线,注册的格式可按实际需要进行设定,在此,本申请不做限制。对于每个预设节点,解析获得该节点的数据结构,然后知晓每个位置对应的内存数据是否为一个特征数据,本实施例中的特征数据,是指有限状态或取值的数据,确定是否为特征,一种简易的算法是,统计10万左右的数据,如果它的值只有10个,那么可以认为其取值范围是有限的,可以认为是特征,这10个取值均是特征。简单举个例子,针对性别,取值只有男和女,那男和女均可认定为特征。通过扫描每个预设节点对应的数据结构,可确定内存特征数据所在位置,进而可确定出该目标业务中所关注的内存特征数据所在的位置,进而按照预设抽取方式对目标业务关注的特征数据。
在知晓每个预设节点对应的数据结构前提下,能够确定出关注的内存特征数据所在的位置,进而可通过xml来定义需要采集的所有信息,包含其结构。xml中注释了内存特征数据所在位置,以及抽取方式,可以理解为,告知从哪里抽取、如何抽取。其中抽取方式本身就是一段逻辑,代码可以找到对应的抽取函数进行处理。从哪里抽取,目前支持单业务属性、组合业务属性。xml中的位置一种方式是人维护的,这个人客观知道每个节点的数据结构。另一方面,可以有自动化的方式去知晓数据结构,在java语言领域可以通过反射的机制获取到。通过这样的方式,针对各个预设节点,抽取该节点的内存特征数据。
对于内存特征数据的存储,采用多级存储策略。具体的,针对不同的业务类型,设计对应的内存空间。所以,在将预设节点对应的内存数据存储至数据总线时,可通过如下步骤实现:
确定目标业务所属的目标业务类型,将抽取到的内存特征数据存储与目标业务类型对应的目标内存空间。其中,目标内存空间按各个预设节点在目标线程中执行的先后顺序存储有与一个或多个预设节点各自对应的内存特征数据。
具体的,在本实施例中,主要采用多级缓存策略来存储目标线程中各个节点对应的内存特征数据。比如采用cache存储器结合外部kv存储器以及固定存储器的方式,针对热点业务对应的内存特征数据,可以存储在cache存储器。cache存储器就是通常所说的内存,是一种位于处理器和主存储器之间高速缓冲存储器,规模较小,但速度很高,通常由静态存储器组成。cache存储器可以提供较快的访问速度,确保快速访问到内存特征数据。
同时,该cache存储器可以基于LRU(Least recently used,最近最少使用)机制进行内存特征数据的管理。具体的,LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是:如果数据最近被访问过,那么将来被访问的几率也更高。所以,可以将这样的内存特征数据作为热点数据。热点数据存储在cache存储器,而非热点数据淘汰后可存储在其他存储器,如:kv存储器。
kv存储器的性能略低于cache存储器,能提供1ms级的访问时速。所以,可以将除热点业务之外的其它业务的内存特征数据存储至该kv存储器。或者,该kv存储器也可以存储所有目标业务对应的内存特征数据。
这样,如果目标业务的目标业务类型为热点业务类型,该目标业务对应的内存特征数据将会存储至cache存储器。具体的,在本实施例中,为了节省内存,在每次抽取到内存特征数据时,采用MD5算法均会生成与之对应的MD5校验值,MD5消息摘要算法(英语:MD5Message-Digest Algorithm)是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。该目标业务对应的内存特征数据MD5校验值存储在cache存储器中。而如果目标业务的目标业务类型不是热点业务类型,该目标业务对应的内存特征数据将会存储至kv存储器。具体的,在本实施例中,在每次抽取到内存特征数据时,均会生成与之对应的MD5校验值,该目标业务对应的内存特征数据MD5校验值存储在kv存储器中。
由于cache存储器以及kv存储器中的存储的数据可能会丢失,所以,还可以设定一个稳定的备份存储器对所有业务对应的内存特征数据进行备份。其中,kv存储器中可以存储全量数据的MD5校验值,也就是说,将目标业务每次抽取到的内存特征数据对应的MD5校验值均存储至kv存储器中。本实施例中还设定一个性能稳定的固定存储器,用于存储每次抽取到的内存特征数据,以及与该内存特征数据的MD5校验值。如果kv存储器存储了所有业务的内存特征数据,则固定存储器和kv存储器之间采取定时同步方式进行数据同步。本实施例主要采用三级缓存策略,将出现频率较高或者热点业务的内存特征数据的MD5校验值存储在cache存储器,同时,kv存储器中备份有全量的内存特征数据对应的MD5校验值,而在预设特征数据库中存储全量的内存特征数据以及与之对应的MD5校验值。预设特征数据库存储在固定存储器中。所以,利用多级缓存,寄生的近端就像直接可以看见全量数据一样,只是整体过程是弱依赖准实时的。这样,由于备份了完整数据,即使服务器宕机了,也不会对业务平台自身造成影响,可以保障系统稳定性。
如果需要对聚合跨线程、跨机器的内存特征数据进行分析,可以借助于一个企业级的数据总线,然后将本实施例中抽取的内存特征数据应用在数据总线层面。数据总线层面即可转换成线程级内存,消除线程级内存的局限性。
这样,针对目标业务对应的目标线程,在运行至各个预设节点时,该节点的内存特征数据采集至目标内存空间(包括前述的cache存储器+kv存储器+预设数据库),该目标内存空间按预设节点在目标线程中运行的先后顺序存储各个预设节点的内存特征数据。这样,可将各个预设节点按运行逻辑执行的先后顺序串联,还原出该目标线程完整链路的内存特征数据,可探索的内存对象范畴扩大至软件运行路径,自动绘制出运行链路,绘制出来的系统链路粒度,和预设节点定义的粒度相同。
对于每次抽取到的内存特征数据,除了将其保存至目标内存空间之外,还需要判断其是否为该目标业务对应的新的内存特征数据。本实施例中还维护了预设特征数据库,该预设特征数据库中保存了在此刻之前关于目标业务出现过的所有的内存特征数据。每个内存特征数据在添加进该预设特征数据库时,采用MD5算法均会生成对应的MD5校验值,该MD5校验值根据目标业务的所属类型被存储在cache存储器或kv存储器。进而,在判断当前抽取到的内存特征数据是否为新增的内存特征数据时,针对当前抽取到的内存特征数据,也会生成一个与之对应的目标MD5校验值,然后,由于cache存储器中存储了热点业务对应内存特征数据的MD5校验值,所以可以先从cache存储器中查看是否存在该目标MD5校验值,如果不存在,再从kv存储器中查看是否存在该目标MD5校验值,如果不存在与之匹配的MD5校验值,表明当前抽取到的内存特征数据为新增内存特征数据。当然,还可以获得目标业务所属的目标业务类型,如果目标业务类型为热点业务类型,直接去kv存储器中查看是否存在该目标MD5校验值,如果不存在,再从kv存储器中查看是否存在该目标MD5校验值,如果不存在与之匹配的MD5校验值,表明当前抽取到的内存特征数据为新增内存特征数据。如果目标业务类型为非热点业务类型,直接去kv存储器中查看是否存在该目标MD5校验值,如果不存在与之匹配的MD5校验值,表明当前抽取到的内存特征数据为新增内存特征数据。
在通过上述MD5验证的方式确定当前抽取的内存特征数据为新增内存特征数据时,可将该新增内存特征数据以及对应的目标MD5校验值添加至预设特征数据库,使得预设特征数据库也能实时更新,同时,将与之对应的目标MD5校验值根据其目标业务所属类别添加至cache存储器或kv存储器,当目标业务属于热点业务时,将目标MD5校验值添加至cache存储器与kv存储器,当目标业务不属于热点业务时,将目标MD5校验值添加至kv存储器。
同时,还会输出第一提示信息,提示目标业务对应的开发人员设置与新增内存特征数据对应的新增预设业务校验规则,以使得在目标线程下一次运行时,能基于该新增预设业务校验规则对该新增内存特征数据进行校验。比如:支付业务中之前录入的内存特征数据包括A支付方式和B支付方式,如果检测到新增的C支付方式,输出是否需要配置该C支付方式的业务校验规则,如果开发人员配置了针对C支付方式的业务校验规则,在目标业务对应的目标线程下一次运行过程中,即可读取该C支付方式,按对应的业务校验规则对其进行校验,按校验结果对应的预设策略进行业务处理。当然,在具体实施过程中,还可以自动配置新增内存特征数据对应的业务校验规则。这样,在目标业务新增场景或功能产生新的内存特征数据情况下,能及时配置新的业务校验规则,实时对目标业务进行有效校验,使得业务校验规则也能实时更新,进而有效控制目标业务的业务风险。业务校验规则定义方面,也可以参考现行的多种表达式引擎,比如:采用aviator+自定义封装的形式。
通过本实施例的方法,对于目标业务的校验分析和反馈均可定位在目标业务运行时,能够按对应的校验规则实时、精细化地对业务中的内存数据进行校验,以实现对业务的校验,进而能有效支持业务实时的、精细化的预警和熔断的机制,在节约人工成本的同时能够有效控制业务风险。
第二方面,基于同一发明构思,本说明书实施例提供一种业务校验装置,请参考图2,该装置包括:
抽取单元201,用于在目标业务对应的目标线程运行过程中,从所述目标线程运行产生的内存数据中抽取与预设业务校验规则对应的目标内存特征数据;
校验单元202,用于基于预设业务校验规则,对目标内存特征数据进行校验,获得校验结果;
处理单元203,用于按校验结果对应的预设策略对目标业务进行处理。
在一种可选方式中,抽取单元201具体用于:
解析预设业务校验规则,确定预设业务校验规则需要校验的目标内存特征数据;
从数据总线中抽取目标内存特征数据,数据总线中存储一个或多个预设节点中每个预设节点对应的内存数据,一个或多个预设节点为在目标进程中预先设置的节点。
在一种可选方式中,业务校验装置还配置单元,具体用于:
在目标线程运行至每个预设节点时,采集该预设节点对应的内存数据存储至数据总线,目标线程中设置有一个或多个预设节点;
确定每个预设节点对应的待抽取的内存特征数据的位置信息,基于每个预设节点中待抽取的内存特征数据的位置信息,按预设抽取方式从数据总线中抽取该预设节点对应的内存特征数据;
对每次抽取到的内存特征数据进行校验,判断抽到的内存特征数据是否为新增内存特征数据,如果是,输出第一提示信息,第一提示信息用于提示目标对象设置与新增内存特征数据对应的新增预设业务校验规则,以使得在目标线程下一次运行时,能基于新增预设业务校验规则对新增内存特征数据进行校验。
在一种可选方式中,配置单元具体用于:
基于每个预设节点对应的数据结构,确定该预设节点对应的待抽取的内存特征数据的位置信息。
在一种可选方式中,处理单元203具体用于:
如果校验结果表明目标内存特征数据不满足预设业务校验规则,拦截目标内存特征数据和/或输出第二提示信息,第二提示信息用于提示目标对象目标业务未通过预设业务校验规则的校验。
在一种可选方式中,配置单元具体用于:
在所述按预设抽取方式从所述数据总线中抽取该预设节点对应的内存特征数据之后,确定所述目标业务所属的目标业务类型;
将抽取到的内存特征数据存储至与所述目标业务类型对应的目标内存空间。
第三方面,基于与前述实施例中业务校验方法同样的发明构思,本发明还提供一种业务校验装置,如图3所示,包括存储器304、处理器302及存储在存储器304上并可在处理器302上运行的计算机程序,处理器302执行程序时实现前文业务校验方法的任一方法的步骤。
其中,在图3中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本实施例中的方法不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
第四方面,基于与前述实施例中业务校验方法的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文业务校验方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。