一种异常处理方法及装置与流程

文档序号:11254040阅读:499来源:国知局
一种异常处理方法及装置与流程

本发明涉及互联网技术领域,特别涉及一种异常处理方法及装置。



背景技术:

随着互联网金融和电子商务的发展,人们越来越多的利用网络进行交易支付和借贷,通常在借贷和支付等业务进行的过程中,风险控制评估就显得非常关键。因此风控系统应运而生。现有技术中,业务方可采用同步阻塞调用的方式调用风控系统。在调用过程中,运行风控系统的服务器为被调用方,发送调用指令的客户端为调用方。风控系统中保存有业务与风控规则之间的对应关系。风控系统根据风控规则对业务进行风险评估,并将评估结果反馈给调用方。在应用过程中,首先,风控系统获取客户端发送的针对一业务的应用程序接口(applicationprogramminginterface,api)调用指令,api调用指令中包括该业务的业务标识;然后根据业务标识查找该业务对应的风控规则集;根据查找到的风控规则对该业务进行风险评估;然后将评估结果反馈给客户端,以使客户端根据评估结果确定是否继续执行该业务,保证业务在无风险或者低风险条件下进行。

现有技术中,若客户端采用同步阻塞调用的方式调用风控系统,在风控系统被调用的过程中,客户端只有接收到风控系统反馈的评估结果才能继续执行业务。当风控系统出现调用超时或请求错误等异常时,无法向客户端反馈评估结果,这时客户端由于接收不到评估结果而不能继续执行业务,出现业务中断的现象。



技术实现要素:

本发明实施例公开了一种异常处理方法及装置,以降低出现业务中断的概率。

为达到上述目的,本发明实施例公开了一种异常处理方法,应用于服务器,包括:

接收客户端执行目标业务过程中发送的应用程序接口api调用指令;

响应所述api调用指令,并检测响应所述api调用指令的过程中是否存在异常;

若存在,将目标关系存入数据库,其中,所述目标关系为:目标异常、所述客户端和所述目标业务三者之间的关系;所述目标异常为:检测到的异常;

判断所述数据库中记录所述目标关系的数量是否大于预设数值;

若大于,针对所述客户端降低所述目标业务对应的风险控制规则的风险控制级别,向所述客户端反馈评估结果。

可选地,所述判断所述数据库中记录所述目标关系的数量是否大于预设数值,包括:

判断所述数据库中记录的、预设时间段内所述目标关系的数量是否大于预设数值。

可选地,所述检测响应所述api调用指令的过程中是否存在异常,包括:

检测响应所述api调用指令的过程中是否出现预设异常,如果是,则判定响应所述api调用指令的过程中存在异常,如果否,则判定响应所述api调用指令的过程中不存在异常。

可选地,在检测到响应所述api调用指令的过程中存在异常之后,所述方法还包括:

向所述客户端发送针对所述目标异常的报警信息。

可选地,述将目标关系存入数据库,包括:

将所述目标异常的信息存储为预设格式的目标消息;

根据所述目标消息,通过预设框架生成目标关系;

将所生成的目标关系按照时间粒度存储至数据库。

为达到上述目的,本发明实施例还公开了一种异常处理装置,应用于服务器,包括:

接收模块,用于接收客户端执行目标业务过程中发送的应用程序接口api调用指令;

响应模块,用于响应所述api调用指令,并检测响应所述api调用指令的过程中是否存在异常,若存在,触发存储模块;

所述存储模块,用于将目标关系存入数据库,其中,所述目标关系为:目标异常、所述客户端和所述目标业务三者之间的关系;所述目标异常为:检测到的异常;

判断模块,用于判断所述数据库中记录所述目标关系的数量是否大于预设数值,若大于,触发降级模块;

所述降级模块,用于针对所述客户端降低所述目标业务对应的风险控制规则的风险控制级别,向所述客户端反馈评估结果。

可选地,所述判断模块,具体用于:

判断所述数据库中记录的、预设时间段内所述目标关系的数量是否大于预设数值。

可选地,所述响应模块具体用于:

检测响应所述api调用指令的过程中是否出现预设异常,如果是,则判定响应所述api调用指令的过程中存在异常,如果否,则判定响应所述api调用指令的过程中不存在异常。

可选地,所述装置还包括:

发送模块,用于向所述客户端发送针对所述目标异常的报警信息。

可选地,所述存储模块具体用于:

将所述目标异常的信息存储为预设格式的目标消息;

根据所述目标消息,通过预设框架生成目标关系;

将所生成的目标关系按照时间粒度存储至数据库。

本发明实施例提供了一种异常处理方法及装置,应用于服务器,方法包括:接收客户端执行目标业务过程中发送的应用程序接口api调用指令;响应所述api调用指令,并检测响应所述api调用指令的过程中是否存在异常;在响应api调用指令的过程中存在异常时,判断客户端在执行的目标业务的过程中出现的检测到的异常的数量是否大于预设数值,若大于,降低客户端执行的目标业务对应的风险控制规则的风险控制级别,向客户端反馈评估结果。与现有技术相比,通过本发明实施例所提供的方案,当风控系统出现调用超时或请求错误等异常时,可以向客户端反馈评估结果,以使客户端可以继续执行业务,进而可以降低出现业务中断的概率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种异常处理方法的流程图;

图2为本发明实施例所提供的一种异常处理装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

参见图1,图1为本发明实施例所提供的一种异常处理方法的流程图,应用于服务器,该方法包括以下步骤:

s110,接收客户端执行目标业务过程中发送的应用程序接口(applicationprogramminginterface,api)调用指令。

具体地,客户端在执行目标业务的过程中会发送针对该目标业务的api调用指令,该api调用指令中可以包括该业务的业务标识。服务器接收客户端发送的api调用指令。

例如,客户端执行微信支付业务的过程中,会发送针对微信支付业务的调用风险控制系统的api调用指令。服务器接收客户端发送的调用风险控制系统的api调用指令。

s120,响应所述api调用指令,并检测响应所述api调用指令的过程中是否存在异常,若存在,执行s130。

服务器在接收到api调用指令后,会响应该api调用指令,执行该api调用指令对应的程序。响应api调用指令的过程中,由于api调用指令错误、服务器响应超时等原因可能会存在响应api调用指令失败的情况。为此在响应上述api调用指令的过程中,可以检测执行该api调用指令对应的程序的过程中是否存在异常,若存在,执行s130,将检测到的异常、客户端和目标业务三者之间的关系存入数据库。

例如,假设客户端在执行微信支付业务中调用风险控制系统,则在api调用指令中可以包括微信支付业务的业务标识。服务器中可以存储有业务标识与风险控制规则之间的对应关系。服务器接收到客户端发送的api调用指令后,会根据api调用指令中的业务标识查找微信支付业务对应的风险控制规则。之后根据查找到的风险控制规则以及api调用指令包括的参数对微信支付业务进行风险评估,并检测风险评估的过程中是否存在异常,若存在,执行s130,将检测到的异常、客户端和目标业务三者之间的关系存入数据库。

具体地,检测响应api调用指令的过程中是否存在异常,可以包括:

检测响应所述api调用指令的过程中是否出现预设异常,如果是,则判定响应所述api调用指令的过程中存在异常,如果否,则判定响应所述api调用指令的过程中不存在异常。

其中,预设异常可以为用户自定义异常或者系统默认异常。预设异常主要是指导致服务器不能继续响应api调用指令的异常。例如,预设异常可以包括:api调用指令错误、网络连接失败、api调用指令对应的程序代码错误、响应超时等。

具体地,可以基于spring框架,检测响应api调用指令的过程中是否出现预设异常。需要说明的是,spring从3.2版本开始提供一个新的注解@controlleradvice,该注解可以理解为控制器增强,该注解可以把它注解内部使用的例如@exceptionhandler、@initbinder、@modelattribute等注解的方法应用到@requestmapping注解的方法上。其中@exceptionhandler注解可以使用springmvc提供的数据绑定,比如注入httpservletrequest等,还可以接收一个当前抛出的throwable对象。在实现方式中,可以将@requestmapping注解的方法作为api调用的方法。然后在@exceptionhandler注解中,同时绑定参数httpservletrequest,httpservletresponse及预设异常,其中预设异常可以是业务自定义的异常也可以是常见java异常。此时,@exceptionhandler注解的作用就是当出现预设异常时进行处理,即出现预设异常时,判定响应api调用指令的过程中存在异常。

s130,将目标关系存入数据库,其中,所述目标关系为:目标异常、所述客户端和所述目标业务三者之间的关系;所述目标异常为:检测到的异常。

服务器在检测到响应api调用指令的过程中存在异常后,会将目标异常、客户端以及目标业务三者之间的对应关系存入数据库,以便后续对目标关系的数量进行统计,并将统计的目标关系的数量与预设数值的进行对比,确定是否针对客户端降低目标业务对应的风险控制规则的风险控制级别。

具体地,数据库中存储的目标异常、客户端以及目标业务三者之间的对应关系可以如表1所示:

表1

具体地,将目标关系存入数据库的过程,可以包括:

将所述目标异常的信息存储为预设格式的目标消息;根据所述目标消息,通过预设框架生成目标关系;将所生成的目标关系按照时间粒度存储至数据库。

预设格式的目标消息可以为:kafka消息、activemq消息等。

预设框架可以为:spark框架、flink框架、stom框架等。

服务器在生成目标关系后,将生成的目标关系按照时间粒度存储至数据库中,即将目标关系与时间之间的对应关系存储至数据库中。通过将目标关系按照时间粒度存储至数据库,有助于对数据库中记录的、预设时间段内的目标关系的数量进行统计,进而可以根据统计的预设时间段内的目标关系的数量与预设数值的进行对比,确定是否针对客户端降低目标业务对应的风险控制规则的风险控制级别。

在一种实现方式中,kafka是一个分布式的、高吞吐量的消息系统。spark是一个基于内存计算的开源的框架,且对数据的分析比较快速,是专为大规模数据处理而设计的快速通用的计算引擎。因此,可以将kafka消息作为预设格式的目标消息,将spark框架作为预设框架,对目标消息进行分析,生成目标关系。通过将kafka消息和spark框架结合,可以构成一个近实时数据处理系统,进而可以实时对检测到的异常的信息进行分析。

具体地,服务器可以将检测到的异常的信息发送给kafka队列,形成kafka消息,以便spark框架近实时地对该消息进行处理,生成目标异常、目标业务以及客户端三者之间的对应关系。并将生成的对应关系按照时间粒度存储至数据库中。需要说明的是,发送给kafka队列的消息中可以包括检测到的异常的标识、检测到的异常出现时间点等信息。

更为具体地,按照时间粒度存储至数据库中的对应关系可以如表2所示:

表2

可以理解,服务器还可以将数据库中存储的目标关系制作成异常情况展示图,并将其反馈给客户端,以便用户查看检测到的异常。

s140,判断所述数据库中记录所述目标关系的数量是否大于预设数值,若大于,执行s150。

当服务器把检测到目标异常后的目标关系存储至数据库中后,判断数据库中记录的目标关系的数量是否大于预设数值,如果目标关系的数量发于预设数值时,表明客户端执行目标业务的过程中出现了多次目标异常,且由于目标异常的存在,服务器无法向客户端反馈评估结果,进而导致目标业务无法继续执行。因此,当目标关系的数量大于预设数值时,针对发送api调用指令的客户端,降低其执行的目标业务对应的风险控制规则的风险控制级别,向该客户端反馈评估结果。其中,目标关系为:目标异常、客户端和目标业务三者之间的关系;目标异常为:检测到的异常。

需要说明的是,预设数值大于1。用户可以根据经验或实验或设备运行条件确定预设数值。可以理解,响应api调用指令的过程中出现的一次异常,可能是偶然因素造成的,通过设定预设数值,可以避免因为偶然因素而直接降低风险控制规则的风险控制级别。

具体地,判断数据库中记录目标关系的数量是否大于预设数值的过程,可以包括:

判断数据库中记录的、预设时间段内目标关系的数量是否大于预设数值。

预设时间段为预先设定的距离目标异常时间点之前的一段时间,用户可以根据实际经验或设备运行条件设定,例如预设时间段可以为1分钟、10分钟、30分钟、1小时等。

举例而言,参见表2,假设预设时间段为5分钟,时间点2为s120中检测到异常的时间点,时间点1和时间点2间隔时间为3分钟,客户端a为发送api调用指令的客户端,且执行业务1,异常a为监测到的异常。则可以确定在数据库中记录的、预设时间段内的目标关系的数量为2。然后,服务器判断目标关系的数量是否大于预设数值。

通过预设时间段,可以提高目标关系之间的相关度,进而可以进一步避免因为偶然因素而直接降低风险控制规则的风险控制级别,降低目标业务的风险性。

s150,针对所述客户端降低所述目标业务对应的风险控制规则的风险控制级别,向所述客户端反馈评估结果。

当数据库中记录的目标关系的数量大于预设数值时,即数据库中记录的、发送api调用指令的客户端执行目标业务的过程中、出现检测到的异常的数量大于预设数值时,表明客户端执行目标业务的过程中出现了多次检测到的异常,且由于检测到的异常的存在,服务器无法向客户端反馈评估结果,进而导致目标业务无法继续执行。因此,此时,服务器可以针对该客户端,降低目标业务对应的风险控制规则的风险控制级别,向所述客户端反馈评估结果。

可以理解,服务器可以将目标业务对应的风险控制规则的风险控制级别降低至服务器可以直接向客户端反馈评估结果的级别。当满足关闭条件时,服务器可以直接将目标业务对应的风险控制规则关闭。其中,关闭条件为:目标业务对应的风险控制规则的风险控制级别较低,且数据库中记录的目标关系的数量大于预设数值。

举例而言,假设预设数值为5,预设时间段为3分钟,客户端a为发送api调用指令的客户端,且执行业务1,异常a为检测到的异常。数据库中记录的、3分钟内、客户端a在执行业务1的过程中出现异常a的次数为6,即预设时间段内、目标关系的数量为6,则可以确定,数据库中记录的、预设时间段内的目标关系的数量大于预设数值,此时,服务器针对客户端a,降低客户端a执行的业务1对应的风险控制规则的风险控制级别。

与现有技术相比,通过本实施例所提供的方案,当风控系统出现调用超时或请求错误等异常时,可以向客户端反馈评估结果,以使客户端可以继续执行业务,进而可以降低出现业务中断的概率。

进一步地,作为本实施例的一种可选方案,在检测到响应所述api调用指令的过程中存在异常之后,该方法还可以包括:

向所述客户端发送针对所述目标异常的报警信息。

可以理解,报警消息可以为针对检测到的异常的提示信息,也可以为针对检测到的异常的警示信息。

具体地,向客户端发送针对目标异常的报警信息可以为:在检测到响应api调用指令的过程中存在异常之后,服务器向客户端发送检测到的异常信息,以使客户端能够确定服务器在响应api调用指令的过程中存在的异常具体是什么。同时,服务器反馈给客户端的异常信息也可以用来提示用户服务器在响应api调用指令的过程中出现了异常。

这样的话,客户端在服务器响应api调用指令的过程中存在异常时,就可以明确确定存在的异常具体是什么,然后根据检测到的异常继续执行目标业务。

具体地,向客户端发送针对目标异常的报警信息还可以为:在针对发送api调用指令的客户端降低目标业务对应的风险控制规则的风险控制级别后,服务器向客户端发送风险控制级别降低信息,用来警示用户目标业务对应的风险控制规则的风险控制级别降低了。

具体地,向客户端发送针对目标异常的报警信息还可以包括第一子消息和第二子消息。其中,第一子消息为:在检测到响应api调用指令的过程中存在异常之后,服务器向客户端发送检测到的异常信息;第二子消息为在针对发送api调用指令的客户端降低目标业务对应的风险控制规则的风险控制级别后,服务器向客户端发送风险控制级别降低信息。

应用本实施例,通过向客户端发送针对目标异常的报警信息,客户端可以在服务器响应api调用指令的过程中出现异常时,确定出现的异常具体是什么,进而可以根据出现的异常继续执行业务。并且,可以当服务器降低风险控制规则的风险控制级别时,能够及时获知。

实施例二

与实施例一所提供的异常处理方法相对应,本发明实施例还提供了一种异常处理装置。参见图2,图2为本发明实施例所提供的一种异常处理装置的结构示意图,应用于服务器,该装置可以包括:

接收模块210,用于接收客户端执行目标业务过程中发送的应用程序接口api调用指令。

响应模块220,用于响应所述api调用指令,并检测响应所述api调用指令的过程中是否存在异常,若存在,触发存储模块230。

存储模块230,用于将目标关系存入数据库,其中,所述目标关系为:目标异常、所述客户端和所述目标业务三者之间的关系;所述目标异常为:检测到的异常。

判断模块240,用于判断所述数据库中记录所述目标关系的数量是否大于预设数值,若大于,触发降级模块250。

降级模块250,用于针对所述客户端降低所述目标业务对应的风险控制规则的风险控制级别,向所述客户端反馈评估结果。

具体地,判断模块240,具体用于:

判断所述数据库中记录的、预设时间段内所述目标关系的数量是否大于预设数值。

具体地,响应模块220具体用于:

检测响应所述api调用指令的过程中是否出现预设异常,如果是,则判定响应所述api调用指令的过程中存在异常,如果否,则判定响应所述api调用指令的过程中不存在异常。

具体地,该装置还可以包括:

发送模块(图2中未示出),用于向所述客户端发送针对所述目标异常的报警信息。

具体地,存储模块230具体用于:

将所述目标异常的信息存储为预设格式的目标消息;

根据所述目标消息,通过预设框架生成目标关系;

将所生成的目标关系按照时间粒度存储至数据库。

与现有技术相比,通过本实施例所提供的方案,当风控系统出现调用超时或请求错误等异常时,可以向客户端反馈评估结果,以使客户端可以继续执行业务,进而可以降低出现业务中断的概率。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom/ram、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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