一种授信申请处理方法、装置、电子设备和存储介质

著录项
  • CN202210547704.5
  • 20220520
  • CN114741178A
  • 20220712
  • 北京宇信科技集团股份有限公司
  • 文杰;王虓
  • G06F9/48
  • G06F9/48 G06F9/46 G06F16/22 G06F16/901 G06F16/23 G06F16/2455 G06F16/25 G06Q40/02 G06Q40/04

  • 北京市海淀区高梁桥斜街42号院1号楼5层1-519
  • 北京(11)
  • 北京卓岚智财知识产权代理事务所(特殊普通合伙)
  • 沈煜华
摘要
本发明实施例提供了一种授信申请处理方法、装置、电子设备和存储介质,该方法,包括:接收授信申请,并基于该授信申请和全局时间轮在目标数据库中确定与该授信申请对应的任务;控制本地时间轮获取授信申请对应的任务并在本地时间轮所位于的本地应用中执行该任务;将任务的执行结果同步至目标数据库;当本地时间轮监听到任务的执行结果满足授信申请的处理条件时,在目标数据库中获取任务的执行结果并反馈给授信申请的发送端。通过设置本地时间轮和全局时间轮,构成一个分布式时间轮组件,在分布式时间轮组件中处理授信申请,在面对海量的交易任务时,能够实现实时处理,提高了交易的处理效率和业务处理的能力。
权利要求

1.一种授信申请处理方法,其特征在于,所述方法包括:

接收授信申请,并基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务;

控制本地时间轮获取所述授信申请对应的任务并在所述本地时间轮所位于的本地应用中执行所述任务;

将所述任务的执行结果同步至所述目标数据库;

当所述本地时间轮监听到所述任务的执行结果满足所述授信申请的处理条件时,在所述目标数据库中获取所述任务的执行结果并反馈给所述授信申请的发送端。

2.根据权利要求1所述的方法,其特征在于,所述基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务,包括:

基于所述授信申请创建所述授信申请的任务明细;

根据所述授信申请的任务明细创建所述授信申请对应的任务;

将所述授信申请的任务明细和所述授信申请对应的任务通过所述全局时间轮建立关联关系;

根据所述关联关系在所述目标数据库中确定与所述授信申请对应的任务。

3.根据权利要求2所述的方法,其特征在于,所述基于所述授信申请创建所述授信申请的任务明细,包括:

确定所述授信申请请求访问的内容;

根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则;

基于所述校验规则生成所述授信申请的任务明细。

4.根据权利要求3所述的方法,其特征在于,所述根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则,包括:

根据确定的所述授信申请请求访问的内容,确定所述授信申请的校验规则中包括的校验子规则;其中,所述校验子规则中包括每个校验子规则的执行规则;

基于所述每个校验子规则的执行规则创建所述授信申请的校验规则。

5.根据权利要求4所述的方法,其特征在于,所述基于所述每个校验子规则的执行规则创建所述授信申请的校验规则,包括:

针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;

当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;

当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;

根据所述执行规则的确定结果创建所述授信申请的校验规则。

6.根据权利要求4所述的方法,其特征在于,在所述基于所述每个校验子规则的执行规则创建所述授信申请的校验规则之后,所述方法还包括:

将所述授信申请的校验规则存储在所述全局时间轮的任务列表中;

基于所述任务列表获取所述授信申请的任务明细。

7.根据权利要求2所述的方法,其特征在于,在所述目标数据库中通过Lua脚本方式获取所述授信申请的任务明细;所述全局时间轮通过List数据结构存储有任务列表。

8.根据权利要求1所述的方法,其特征在于,所述方法还包括:

记录满足所述授信申请的处理条件的所述任务的执行结果;

将所述执行结果发送至所述授信申请的发送端。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当所述本地时间轮监听到所述任务的执行结果不满足所述授信申请的处理条件时,获取与所述授信申请对应的任务;

判断所述任务是否执行完成;

当所述任务未执行完成时,将所述授信申请对应的任务同步至本地时间轮,并在所述本地时间轮执行所述任务;

当所述任务执行完成时,记录不满足所述授信申请的处理条件的所述任务的执行结果并发送至所述授信申请的发送端。

10.一种授信申请处理装置,其特征在于,所述装置包括:

查模块,用于接收授信申请,并基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务;

执行模块,用于控制本地时间轮获取所述授信申请对应的任务并在所述本地时间轮所位于的本地应用中执行所述任务;

同步模块,用于将所述任务的执行结果同步至所述目标数据库;

监听模块,用于当所述本地时间轮监听到所述任务的执行结果满足所述授信申请的处理条件时,在所述目标数据库中获取所述任务的执行结果并反馈给所述授信申请的发送端。

11.根据权利要求10所述的装置,其特征在于,所述查模块,具体包括:

任务明细创建子模块,用于基于所述授信申请创建所述授信申请的任务明细;

任务创建子模块,用于根据所述授信申请的任务明细创建所述授信申请对应的任务;

关联关系建立子模块,用于将所述授信申请的任务明细和所述授信申请对应的任务通过所述全局时间轮建立关联关系;

任务确定子模块,用于根据所述关联关系在所述目标数据库中确定与所述授信申请对应的任务。

12.根据权利要求11所述的装置,其特征在于,所述任务明细创建子模块,具体包括:

内容确定单元,用于确定所述授信申请请求访问的内容;

校验规则创建单元,用于根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则;

任务明细生成单元,用于基于所述校验规则生成所述授信申请的任务明细。

13.根据权利要求12所述的装置,其特征在于,所述校验规则创建单元,具体用于:

根据确定的所述授信申请请求访问的内容,确定所述授信申请的校验规则中包括的校验子规则;其中,所述校验子规则中包括每个校验子规则的执行规则;

基于所述每个校验子规则的执行规则创建所述授信申请的校验规则。

14.根据权利要求13所述的装置,其特征在于,所述校验规则创建单元,具体用于:

针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;

当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;

当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;

根据所述执行规则的确定结果创建所述授信申请的校验规则。

15.根据权利要求13所述的装置,其特征在于,所述装置还包括获取模块,用于:

将所述授信申请的校验规则存储在所述全局时间轮的任务列表中;

基于所述任务列表获取所述授信申请的任务明细。

16.根据权利要求11所述的装置,其特征在于,在所述目标数据库中通过Lua脚本方式获取所述授信申请的任务明细;所述全局时间轮通过List数据结构存储有任务列表。

17.根据权利要求10所述的装置,其特征在于,所述装置还包括反馈模块,用于:

记录满足所述授信申请的处理条件的所述任务的执行结果;

将所述执行结果发送至所述授信申请的发送端。

18.根据权利要求10所述的装置,其特征在于,所述装置还包括判断处理模块,用于:

当所述本地时间轮监听到所述任务的执行结果不满足所述授信申请的处理条件时,获取与所述授信申请对应的任务;

判断所述任务是否执行完成;

当所述任务未执行完成时,将所述授信申请对应的任务同步至本地时间轮,并在所述本地时间轮执行所述任务;

当所述任务执行完成时,记录不满足所述授信申请的处理条件的所述任务的执行结果并发送至所述授信申请的发送端。

19.一种电子设备,其特征在于,所述设备包括:

处理器;

存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-9中的任一项所述的授信申请处理方法。

20.一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1-9中的任意一项所述的授信申请处理方法。

说明书
技术领域

本发明涉及计算机技术领域,尤其涉及一种授信申请处理方法、装置、电子设备和存储介质。

现有的授信申请的流程按照步骤拆分进行服务编排处理时,主要是将各步骤串行处理,或通过单个应用中的线程池,进行一定的策略并行处理结果收集。中国专利公开号CN112015572A,发明名称为一种延时任务的执行方法、中心和系统,其可作为本申请相关的现有技术。

目前主要的问题有:

1、整个交易的链路长,一笔授信的交易时间往往需要几十秒到数分钟;

2、应用中每笔授信交易需要占用线程等待返回结果,每个应用的并发小,需要的CPU资源高。现有的并行处理模型是基于JUC(java.util.concurrent包中的工具,用于并发编码),对于并发的规则统计一般是通过计数器、屏障、信号量等机制进行编码,因此需要的占用的CPU资源高;

3、使用来往消息队列进行异步处理时,需要额外的硬件资源,每个消息队列在使用时需要做重发或者幂等处理,导致交易的处理效率低。

鉴于解决上述的技术问题,亟需一种可以提高交易效率的授信申请处理方法。

本发明提供了一种授信申请处理方法、装置、电子设备和存储介质,目的在于在面对多笔交易任务时,能够实现实时处理,提高交易的处理效率和业务处理能力。

为达上述目的,第一方面,本发明提供一种授信申请处理方法,所述方法包括:

接收授信申请,并基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务;

控制本地时间轮获取所述授信申请对应的任务并在所述本地时间轮所位于的本地应用中执行所述任务;

将所述任务的执行结果同步至所述目标数据库;

当所述本地时间轮监听到所述任务的执行结果满足所述授信申请的处理条件时,在所述目标数据库中获取所述任务的执行结果并反馈给所述授信申请的发送端。

在一些可能的实施方式中,所述目标数据库包括:Redis数据库。

在一些可能的实施方式中,所述基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务,包括:

基于所述授信申请创建所述授信申请的任务明细;

根据所述授信申请的任务明细创建所述授信申请对应的任务;

将所述授信申请的任务明细和所述授信申请对应的任务通过所述全局时间轮建立关联关系;

根据所述关联关系在所述目标数据库中确定与所述授信申请对应的任务。

在一些可能的实施方式中,所述基于所述授信申请创建所述授信申请的任务明细,包括:

确定所述授信申请请求访问的内容;

根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则;

基于所述校验规则生成所述授信申请的任务明细。

在一些可能的实施方式中,所述根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则,包括:

根据确定的所述授信申请请求访问的内容,确定所述授信申请的校验规则中包括的校验子规则;其中,所述校验子规则中包括每个校验子规则的执行规则;

基于所述每个校验子规则的执行规则创建所述授信申请的校验规则。

在一些可能的实施方式中,所述基于所述每个校验子规则的执行规则创建所述授信申请的校验规则,包括:

针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;

当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;

当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;

根据所述执行规则的确定结果创建所述授信申请的校验规则。

在一些可能的实施方式中,在所述基于所述每个校验子规则的执行规则创建所述授信申请的校验规则之后,所述方法还包括:

将所述授信申请的校验规则存储在所述全局时间轮的任务列表中;

基于所述任务列表获取所述授信申请的任务明细。

在一些可能的实施方式中,在所述目标数据库中通过Lua脚本方式获取所述授信申请的任务明细;所述全局时间轮通过List数据结构存储有任务列表。

在一些可能的实施方式中,所述方法还包括:

记录满足所述授信申请的处理条件的所述任务的执行结果;

将所述执行结果发送至所述授信申请的发送端。

在一些可能的实施方式中,当所述本地时间轮监听到所述任务的执行结果不满足所述授信申请的处理条件时,获取与所述授信申请对应的任务;

判断所述任务是否执行完成;

当所述任务未执行完成时,将所述授信申请对应的任务同步至本地时间轮,并在所述本地时间轮执行所述任务;

当所述任务执行完成时,记录不满足所述授信申请的处理条件的所述任务的执行结果并发送至所述授信申请的发送端。

第二方面,本发明提供了一种授信申请处理装置,所述装置包括:

查模块,用于接收授信申请,并基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务;

执行模块,用于控制本地时间轮获取所述授信申请对应的任务并在所述本地时间轮所位于的本地应用中执行所述任务;

同步模块,用于将所述任务的执行结果同步至所述目标数据库;

监听模块,用于当所述本地时间轮监听到所述任务的执行结果满足所述授信申请的处理条件时,在所述目标数据库中获取所述任务的执行结果并反馈给所述授信申请的发送端。

在一些可能的实施方式中,所述查模块,具体包括:

任务明细创建子模块,用于基于所述授信申请创建所述授信申请的任务明细;

任务创建子模块,用于根据所述授信申请的任务明细创建所述授信申请对应的任务;

关联关系建立子模块,用于将所述授信申请的任务明细和所述授信申请对应的任务通过所述全局时间轮建立关联关系;

任务确定子模块,用于根据所述关联关系在所述目标数据库中确定与所述授信申请对应的任务。

在一些可能的实施方式中,所述任务明细创建子模块,具体包括:

内容确定单元,用于确定所述授信申请请求访问的内容;

校验规则创建单元,用于根据确定的所述授信申请请求访问的内容,创建所述授信申请的校验规则;

任务明细生成单元,用于基于所述校验规则生成所述授信申请的任务明细。

在一些可能的实施方式中,所述校验规则创建单元,具体用于:

根据确定的所述授信申请请求访问的内容,确定所述授信申请的校验规则中包括的校验子规则;其中,所述校验子规则中包括每个校验子规则的执行规则;

基于所述每个校验子规则的执行规则创建所述授信申请的校验规则。

在一些可能的实施方式中,所述校验规则创建单元,具体用于:

针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;

当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;

当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;

根据所述执行规则的确定结果创建所述授信申请的校验规则。

在一些可能的实施方式中,所述装置还包括:获取模块,用于:

将所述授信申请的校验规则中的顺序参数存储在所述全局时间轮的任务列表中;

基于所述任务列表获取所述授信申请的任务明细。

在一些可能的实施方式中,在所述目标数据库中通过Lua脚本方式获取所述授信申请的任务明细;所述全局时间轮通过List数据结构存储有任务列表。

在一些可能的实施方式中,所述装置还包括反馈模块,用于:

记录满足所述授信申请的处理条件的所述任务的执行结果;

将所述执行结果发送至所述授信申请的发送端。

在一些可能的实施方式中,所述装置还包括判断处理模块,用于:

当所述本地时间轮监听到所述任务的执行结果不满足所述授信申请的处理条件时,获取与所述授信申请对应的任务;

判断所述任务是否执行完成;

当所述任务未执行完成时,将所述授信申请对应的任务同步至本地时间轮,并在所述本地时间轮执行所述任务;

当所述任务执行完成时,记录不满足所述授信申请的处理条件的所述任务的执行结果并发送至所述授信申请的发送端。

第三方面,本发明还提供一种电子设备,所述设备包括:

处理器;

存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的任意一种授信申请处理方法。

第四方面,本发明还提供了一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的授信申请处理方法。

本发明的实施例的有益效果在于:

本发明实施例提供了一种授信申请处理方法、装置、电子设备和存储介质,该方法,包括:接收授信申请,并基于该授信申请和全局时间轮在目标数据库中确定与该授信申请对应的任务;控制本地时间轮获取授信申请对应的任务并在本地时间轮所位于的本地应用中执行该任务;将任务的执行结果同步至目标数据库;当本地时间轮监听到任务的执行结果满足授信申请的处理条件时,在目标数据库中获取任务的执行结果并反馈给授信申请的发送端。区别于现有的授信交易处理方法,本发明实施例提供的授信申请处理方法,通过设置本地时间轮和全局时间轮,构成一个分布式时间轮组件,在分布式时间轮组件中处理授信申请,通过在分布式时间轮中处理授信申请对应的任务,在面对海量的交易任务时,能够实现实时处理,提高了交易的处理效率和业务处理的能力。

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

图1为本发明实施例提供的一种授信申请处理方法的流程示意图;

图2为本发明实施例提供的一种授信申请处理方法的流程示意图;

图3为本发明实施例提供的一种授信申请处理装置结构示意图;

图4为本发明实施例提供的电子设备的结构示意图;

图5为本发明实施例提供的计算机存储介质的结构示意图。

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

以下先对本发明实施例中使用到的技术术语进行定义说明:

1、时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表示,描述算法所用时间与执行数据规模之间的关系。

2、Redis数据结构:String、Hash、List都是Redis API提供的数据存储结构。

3、Redis Lua:Redis内嵌的脚本语言,可以组合一定的业务逻辑。Lua脚本具有独占性,即Lua脚本执行期间不受理杀死该脚本外的任何Redis操作请求,可以确保其中执行的Redis数据变更的原子性。

4、Spring:Spring是Java EE编程领域的一个轻量级开源框架,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架。目前主流的Java应用都使用Spring框架或使用从其衍生的SpringBoot、SpringCloud等实现。

时间轮技术是Linux内核对低精度定时器(最小刻度1Hz,秒级)的一种实现机制,也是时间复杂度最优的一种定时器。大部分的延迟算法都是基于时间轮技术,时间轮技术是一种高效利用线程资源来进行批量化调度的一种调度模型,把大批量的调度任务全部都绑定到同一个调度器上面,使用该调度器进行所有任务的管理、触发以及运行,能够高效的管理各种延时任务、周期任务、通知任务等,其时间复杂度在特定情况下都是O(1)的。

通常在软件架构设计中的异步通讯领域,在时间精度要求秒级时、添加海量的任务时、对时间相近的任务执行顺序要求并不严格、发布任务方和执行任务方之间没有直接联系的需求时,通常需要采用时间轮技术。

现有技术中,在例如互联网贷款平台(简称网贷平台)上,有多个合作方存在时,在单笔交易时会有多个第三方接口调用时的规则处理。现有的授信申请的流程按照步骤拆分进行服务编排处理时,主要是将各步骤串行处理,或通过单个应用中的线程池,进行一定策略并行处理结果收集。主要存在的问题有:整个交易链路时间长,一笔授信的交易时间往往需要几十秒到数分钟,每笔授信交易需要占用线程等待返回结果,每个应用的并发小,需要的CPU资源高;使用来往消息队列进行异步处理,需要额外的硬件资源,每个消息队列在使用需要做重发/幂等处理,交易的处理效率低。

为了解决这一技术问题,本发明实施例提出了一种授信申请处理方法,以下对本发明实施例的方案进行详细描述。

图1为本发明实施例的授信申请处理方法的一种流程示意图。如图1所示,该方法主要包括以下步骤:

步骤S101,接收授信申请,并基于授信申请和全局时间轮在目标数据库中确定与授信申请对应的任务。

本发明实施例提供的方法可以应用于服务器中,服务器可以为网贷平台或者金融平台的服务器,本地时间轮可以设置于本地应用中,例如Java应用;全局时间轮可以为基于Redis数据库来存储的时间轮相关数据,使用Redis来存储时间轮相关数据,相当于自带了全局变量,有关的Redis数据结构设计可以满足:(1) 每个时间片的任务列表应该可以在O(1)的时间复杂度下被检索到,算法的时间复杂度是一个函数,它可以定性描述该算法的运行时间;(2)任务列表是一个操作时间复杂度为O(1)的双向链表,便于插入和提取;(3) 取出任务的操作,可以负载均衡;(4) 多次执行的任务,可以自带参数以便于快速操作;(5)避免不可预知的大规模操作阻塞Redis主线程。

服务器接收授信申请,该授信申请可以由合作方或者业务方等外部系统发出,由授信平台(其可以位于服务器中)接收该申请,向授信平台传输用户信息、身份证、人脸识别影像、联系人、银行卡信息、设备信息等信息。授信平台将全部信息进行落库,授信平台进行黑名单、关系人名单、反名单等验证、反欺诈核查、征信查询和风险审批,将审批结果实时传输至合作方。

在一些实施例中,基于授信申请和全局时间轮在目标数据库中确定与授信申请对应的任务,可以包括如下步骤:

基于授信申请创建授信申请的任务明细;根据授信申请的任务明细创建授信申请对应的任务;将授信申请的任务明细和授信申请对应的任务通过全局时间轮建立关联关系;根据关联关系在目标数据库中确定与授信申请对应的任务。

具体地,授信申请中可以包括业务方或者合作方的基本信息,例如用户信息、身份证、人脸识别影像、联系人、银行卡信息、设备信息等,根据授信申请中包括的上述信息确定需要进行信息审批的任务明细,例如进行黑名单、关系人名单、反名单等验证、反欺诈核查、征信查询和风险审批等等,根据授信申请创建任务明细,根据创建好的任务明细和授信申请对应的任务通过全局时间轮建立关联关系,根据建立好的关联关系可以在目标数据库中的任务列表中确定与授信申请对应的任务。

在一些实施例中,基于授信申请创建授信申请的任务明细的方法可以包括:确定授信申请请求访问的内容;根据确定的授信申请请求访问的内容,创建授信申请的校验规则;基于校验规则生成授信申请的任务明细。

具体地,首先确定授信申请请求访问的内容,例如个人贷款黑名单数据库、关系人公共服务,匹配关系人名单、反服务等,根据授信申请内请求访问的内容,创建访问这些内容的校验规则,校验规则可以包括各个内容的访问顺序,还可以为访问规则,例如在黑名单里为校验不通过,在匹配关系人名单里为校验通过,具体的访问规则可以根据用户的实际需求进行设定。根据上述的校验规则生成授信申请的任务明细,也就是说,任务明细当中可以包括具体的任务内容,以上仅仅以示例说明,请求访问的内容可以根据业务方或者合作方的实际业务需求进行调整。

在一些实施例中,根据确定的授信申请请求访问的内容,创建授信申请的校验规则,可以包括:根据确定的授信申请请求访问的内容,确定授信申请的校验规则中包括的校验子规则;其中,校验子规则中包括每个校验子规则的执行规则;基于每个校验子规则的执行规则创建授信申请的校验规则。

例如,在对授信申请的校验规则中,可以包括对于各个请求访问内容的校验子规则,校验子规则中包括每个校验子规则的执行规则,该校验子规则可以用顺序参数表示,例如步骤号、并行或者串行等,例如每个访问内容的校验顺序,基于每个校验子规则的执行规则创建授信申请的校验规则。

进一步地,基于每个校验子规则的执行规则创建授信申请的校验规则,可以包括:针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;根据所述执行规则的确定结果创建所述授信申请的校验规则。

具体地,授信申请的校验规则中可以包括多个校验子规则,各个校验子规则之间可能存在步骤依赖关系,即存在步骤依赖关系的校验子规则之间需要串行执行,是有一定的执行顺序要求的,不存在步骤依赖关系的校验子规则可以并行执行,各个校验子规则之间互不影响,可以同时执行。

在基于每个校验子规则的执行规则创建授信申请的校验规则之后,该方法还可以包括:将授信申请的校验规则存储在全局时间轮的任务列表中;基于该任务列表获取授信申请的任务明细。在本发明实施例中,将授信申请的校验规则存储在全局时间轮的任务列表中,根据任务列表中存储的授信申请的校验规则,其中还包括各个子校验规则,获取授信申请的任务明细。

需要说明的是,在目标数据库中通过Lua脚本方式获取授信申请的任务明细;全局时间轮通过List数据结构存储有任务列表。Lua脚本是Redis内嵌的脚本语言,可以组合一定的业务逻辑。Lua脚本具有独占性,在Lua脚本执行期间不受理除该脚本外的任何Redis操作请求,可以确保其中执行的Redis数据变更的原子性。通过Lua脚本方式可以保证取出的任务不会被其它应用再次取出,避免了同一时间内的重复访问,实现了负载均衡。

以使用Redis来存储时间轮数据为例,Redis中存储有时间轮的当前指针和任务列表,具体的Redis可以使用List数据结构存储任务列表,在Redis中的任务列表中添加任务时,可以通过hmset命令添加单个任务,以保障原子性,通过限制任务的字段数以确保hmset不会阻塞。在确定授信申请的校验规则中的步骤数量和步骤依赖顺序时,在任务的Hash中添加一个next字段,指向下一个任务的taskKey,即在任务列表之外,形成另一个维度的链表。Lua脚本检查当任务的执行次数times归零时,如果还存在下一个任务时,将该任务按照规则放入全局时间轮中,即可实现任务的串行机制。

同时,在任务的Hash中添加tradeId字段,可以用于聚合同一业务Id的并行任务,任务的执行结果根据业务Id拼接的键值key写入集合X(具体需要依据业务进行设计,可以是Hash、List、Zset等Redis的集合类数据结构),即可实现并行结果的数据准备。基于对该集合X的监听,进一步实现并行结果的聚合。

步骤S102,控制本地时间轮获取授信申请对应的任务并在本地时间轮所位于的本地应用中执行任务。

控制本地时间轮获取任务并在本地执行该任务,因为本地时间轮通常设置于本地应用中,所以由本地应用执行任务。

步骤S103,将任务的执行结果同步至目标数据库。

在步骤102中,控制本地时间轮执行任务以后,生成任务执行结果,并且将任务的执行结果同步至全局时间轮,全局时间轮位于目标数据库中,除了存储有任务列表以外,还会在目标数据库中生成一个存储有任务执行结果的链表,该链表是静态的。

步骤S104,当本地时间轮监听到任务的执行结果满足授信申请的处理条件时,在目标数据库中获取任务的执行结果并反馈给授信申请的发送端。

在本地时间轮执行任务的同时,本地时间轮也在持续监听任务的执行结果,当任务的执行结果满足授信申请的处理条件时,例如审核通过了所有的检验子规则时,即授信申请成功的时候,在目标数据库中获取全局时间轮中的任务的执行结果并反馈给授信申请的发送端,以通知发送端授信申请成功。

在一具体的实施例中,本发明实施例提供的方法还可以包括:记录满足授信申请的处理条件的任务的执行结果;将执行结果发送至授信申请的发送端。除了获取任务的执行结果以外,还可以在本地记录满足授信申请的处理条件的任务的执行结果,将执行结果发送给授信申请的发送端,在本地时间轮记录任务的执行结果,而不是通过在全局时间轮存储任务的执行结果进而获取得到任务的执行结果的方式,可以不占用全局时间轮的资源,便于获取任务的执行结果。

在一具体的实施例中,本发明实施例提供的方法还可以包括:当本地时间轮监听到任务的执行结果不满足授信申请的处理条件时,获取与授信申请对应的任务;判断任务是否执行完成;当任务未执行完成时,将授信申请对应的任务同步至本地时间轮,并在本地时间轮执行任务;当任务执行完成时,记录不满足授信申请的处理条件的任务的执行结果并发送至授信申请的发送端。当本地时间轮监听到任务的执行结果不满足授信申请的处理条件时,再次获取与授信申请对应的任务,判断该任务是否执行完成,例如具体判断该任务中包括的任务明细是否都已经执行完成;当任务未执行完成时,将授信申请对应的任务同步至本地时间轮,并在本地时间轮执行任务,同时将执行结果同步至全局时间轮或者记录在本地时间轮;当任务执行完成时,记录不满足授信申请的处理条件的任务的执行结果并发送至授信申请的发送端,例如所有的检验规则步骤都已经审核,但是最终的结果为不通过,将任务的执行结果发送至授信申请的发送端,通知发送授信申请的客户端。

在本发明实施例中,关于全局时间轮和本地时间轮的数据结构,以使用Redis来存储时间轮数据为例,Redis中存储有时间轮的当前指针和任务列表,具体的Redis可以使用List数据结构存储任务列表,其键名通过时间片标记tickId和轮数round进行拼接,根据下一次待执行任务的时间轮参数可以确定对应的时间片标记tickId和轮数round,根据键名从任务列表中取出任务,此时的检索时间复杂度为O(1)。通过键名访问任务时,使用Hash数据结构存储,在其中包含下一次待执行任务的执行时间和执行次数等字段,用于执行下一次任务。

需要说明的是,String、Hash、List都是Redis 应用程序接口提供的数据存储结构。使用String存储时间轮的当前时间片数和当前轮数两个时间轮参数,时间轮参数的所有操作都是时间复杂度O(1)的。在任务列表中通过Lua脚本方式获取下一次待执行任务,Lua脚本是Redis内嵌的脚本语言,可以组合一定的业务逻辑。Lua脚本具有独占性,在Lua脚本执行期间不受理除该脚本外的任何Redis操作请求,可以确保其中执行的Redis数据变更的原子性。通过Lua脚本方式可以保证取出的任务不会被其它应用再次取出,避免了同一时间内的重复访问,实现了负载均衡。

下面以图2为例,结合实际的应用场景,详细介绍本发明实施例提供的授信申请方法。

如图2所示,在业务方或者合作方发出授信申请时,主要包括如下步骤:

步骤S201,接受授信申请;

步骤S202,将授信申请落库;

将授信申请存储在本地数据库中,在接收到同一个业务方的相同的申请时,可以直接获取任务的执行结果并返回,或者直接拒绝处理相同的申请,这样可以避免重复处理同一个授信申请,节省任务处理时间,提高处理效率。

步骤S203,根据授信申请投递分布式时间轮队列;

根据授信申请投递分布式时间轮队列,分布式时间轮包括全局时间轮和本地时间轮,先根据授信申请在全局时间轮中查与授信申请对应的任务,再将授信申请对应的任务同步至本地时间轮,并控制本地时间轮执行该任务。具体的,根据授信申请查任务时,可以确定对该授信申请的校验规则,其中,校验规则可以包括风控规则校验、黑名单校验、关系人校验、反校验、反欺诈风险校验等,这几个校验规则是可以并行执行的,即上述的校验规则可以同时执行,彼此之间不影响,各自独立校验。

示例性的,下面将授信申请投递到分布式时间轮队列中的流程分成16个主过程,并将每个过程进行编号,

主过程1、网贷平台校验授信策略,核实是否命中:

核实结果为命中时,更新授信申请状态为拒绝,执行主过程16;

核实结果为未命中时,执行主过程2;

主过程2、网贷平台查询个人贷款黑名单数据库,核实是否命中:

核实结果为命中时,更新授信申请状态为拒绝,执行主过程16;

核实结果为未命中时,执行主过程3;

主过程3、网贷平台将授信申请中的客户身份证号传递给关系人公共服务,匹配关系人名单,核实是否命中:

核实结果为命中时,更新授信申请状态为拒绝,执行主过程16;

核实结果为未命中时,执行主过程4;

主过程4、网贷平台将授信申请中的客户身份证号传递给反服务核实是否命中反名单:

核实结果为命中时,更新授信申请状态为拒绝,执行主过程16;

核实结果为未命中时,执行主过程5;

主过程5、网贷平台进行人脸识别大头照检验,将客户信息通过人脸识别checkPerson接口,传输至人脸识别平台,人脸识别平台输出结果:

核实结果为命中时,更新授信申请状态为拒绝,执行主过程16;

核实结果为未命中时,执行主过程7;

主过程6、网贷平台进行人脸识别ocr(Optical Character Recognition,光学字符识别)鉴定,将客户身份信息通过人脸识别ocr接口,传输至人脸识别平台,人脸识别平台输出结果:

核实结果不满足要求时,更新授信申请状态为拒绝,执行主过程16;

核实结果满足要求时,执行主过程7;

主过程7、网贷平台进行判断,是否需要通过反欺诈接口:

若需要通过,则执行主过程8;

若不需要通过,则执行主过程9。

主过程8、网贷平台调用蚁盾反欺诈接口,用于反欺诈风险校验,将返回结果进行核实:

若命中反欺诈校验,更新查询结果为拒绝,执行主过程16;

若未命中反欺诈校验,则执行主过程9。

主过程9、按照网贷平台配置抽样规则,判断是否需要调用蚁盾评分卡接口:

若需要通过,则执行主过程10;

若不需要通过,则执行主过程11。

主过程10、网贷平台调用蚁盾评分卡接口,用于评分卡风险校验,将返回结果进行核实:

若命中评分卡分数小于限定值(公共),更新查询结果为拒绝,执行主过程16;

若未命中评分卡校验,则执行主过程11。

主过程11、网贷平台将生成征信查询授权书并调用CFCA(China FinancialCertification Authority,中国金融认证中心)签署客户人名章,将征信影像件(身份证正反面和授权书)上传至影像平台,保留对应的批次号;

主过程12、调用二代征信接口,查询客户二代征信,并通过通知接口,告知征信前置对应征信查询流水号的影像批次号;

主过程13、网贷平台解析征信报告,将所需内容落库;

主过程14、根据接口,将信息传输至蚁盾平台,蚁盾平台输出客户额度、利率、拒绝原因等信息;

主过程15、网贷平台更新授信结果,通知中和农信授信结果;

主过程16、流程结束。

步骤S204,记录投递分布式时间轮队列的处理结果;

记录在S203中的任务处理结果,保存在全局时间轮中,以便业务方或者合作方向网贷平台发起授信结果查询。

步骤S205,返回处理结果。

网贷平台将结果进行返回,执行主过程2。

在本实施例中,对授信申请的流程按照步骤可以拆分进行服务编排,对每个步骤分配任务号,也可以为每个步骤添加2个参数,参数A用于配置该任务是否支持并行处理,参数B用于配置该步骤依赖的任务号,支持并行时参数B配置为0。如图2中所示,支持串行时,参数B为需要依赖的上一步骤的任务号,在图2中所示,风控规则核验的任务号为1,黑名单核验的任务号为2,关系人核验的任务号为3,反核验的任务号为4,大头照核验的任务号为5,OCR核验的任务号为6,蚁盾评分卡的任务号为8,CFCA签章的任务号为9,二代征信查询的任务号为10,蚁盾平台的任务号为11,反欺诈核验的任务号为7,其中每个核验规则下都有表征该规则是并行还有串行处理,如果是并行的,则参数为“并-0”;如果是串行,则参数为“串-需要依赖的任务号”,例如,任务6需要在任务5之后进行,参数为“串-5”,其他的以此类推。当外部系统发起授信申请,本地应用可以保存请求。根据涉及步骤的参数A的值确认该请求可同时并行的步骤数量,根据参数B确认步骤之间的依赖关系。

本发明实施例提供的授信申请处理方法,该方法包括:接收授信申请,并根据接收到的授信申请在全局时间轮中查与该授信申请对应的任务;将该与上述授信申请对应的任务同步至本地时间轮,并控制本地时间轮执行任务;将该任务的执行结果同步至全局时间轮;当本地时间轮监听到任务的执行结果满足授信申请的处理条件时,获取该任务的执行结果并反馈给授信申请的发送端。区别于现有的授信交易处理方法,本发明实施例提供的授信申请处理方法,通过设置本地时间轮和全局时间轮,构成一个分布式时间轮组件,在分布式时间轮组件中处理授信申请,通过在分布式时间轮中处理授信申请对应的任务,在面对海量的交易任务时,能够实现实时处理,提高了交易的处理效率和业务处理的能力。

基于与图1所示的授信申请处理方法相同的发明构思,本发明实施例还提供了一种授信申请处理装置,如下面实施例所述。由于该装置解决问题的原理与图1中的授信申请处理方法相似,因此该装置的实施可以参见图1的授信申请处理方法的实施,重复之处不再赘述。其结构如图3所示,该授信申请处理装置30包括:查模块31、执行模块32、同步模块33、监听模块34;其中,

查模块31,用于接收授信申请,并基于所述授信申请和全局时间轮在目标数据库中确定与所述授信申请对应的任务;

执行模块32,用于控制本地时间轮获取所述授信申请对应的任务并在所述本地时间轮所位于的本地应用中执行所述任务;

同步模块33,用于将所述任务的执行结果同步至所述目标数据库;

监听模块34,用于当所述本地时间轮监听到所述任务的执行结果满足所述授信申请的处理条件时,在所述目标数据库中获取所述任务的执行结果并反馈给所述授信申请的发送端。

在一实施例中,查模块31,具体包括:

任务明细创建子模块,用于基于所述授信申请创建所述授信申请的任务明细;

任务创建子模块,用于根据所述授信申请的任务明细创建所述授信申请对应的任务;

关联关系建立子模块,用于将所述授信申请的任务明细和所述授信申请对应的任务通过所述全局时间轮建立关联关系;

任务确定子模块,用于根据所述关联关系在所述目标数据库中确定与所述授信申请对应的任务。

在一些实施例中,所述任务明细创建子模块,具体包括:

内容确定单元,用于确定授信申请请求访问的内容;

校验规则创建单元,用于根据确定的授信申请请求访问的内容,创建授信申请的校验规则;

任务明细生成单元,用于基于校验规则生成授信申请的任务明细。

在一些实施例中,所述校验规则创建单元,具体用于:

根据确定的所述授信申请请求访问的内容,确定所述授信申请的校验规则中包括的校验子规则;其中,所述校验子规则中包括每个校验子规则的执行规则;

基于所述每个校验子规则的执行规则创建所述授信申请的校验规则。

在一些实施例中,所述校验规则创建单元,具体用于:

针对任一校验子规则,判断其与其他的任一校验子规则之间是否存在执行步骤依赖关系;

当存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为串行执行;

当不存在执行步骤依赖关系时,确定该任一校验子规则的执行规则为并行执行;

根据所述执行规则的确定结果创建所述授信申请的校验规则。

在一些实施例中,所述装置还包括:获取模块,用于:

将所述授信申请的校验规则中的顺序参数存储在所述全局时间轮的任务列表中;

基于所述任务列表获取所述授信申请的任务明细。

在一些实施例中,在所述目标数据库中通过Lua脚本方式获取所述授信申请的任务明细;所述全局时间轮通过List数据结构存储有任务列表。

在一些实施例中,所述装置还包括反馈模块,用于:

记录满足所述授信申请的处理条件的所述任务的执行结果;

将所述执行结果发送至所述授信申请的发送端。

在一些实施例中,所述装置还包括判断处理模块,用于:

当所述本地时间轮监听到所述任务的执行结果不满足所述授信申请的处理条件时,获取与所述授信申请对应的任务;

判断所述任务是否执行完成;

当所述任务未执行完成时,将所述授信申请对应的任务同步至本地时间轮,并在所述本地时间轮执行所述任务;

当所述任务执行完成时,记录不满足所述授信申请的处理条件的所述任务的执行结果并发送至所述授信申请的发送端。

本发明的实施例的有益效果在于,提供了一种授信申请处理装置,该装置包括:

查模块,用于接收授信申请,并基于授信申请和全局时间轮在目标数据库中确定与授信申请对应的任务;执行模块,用于控制本地时间轮获取授信申请对应的任务并在本地时间轮所位于的本地应用中执行任务;同步模块,用于将任务的执行结果同步至目标数据库;监听模块,用于当本地时间轮监听到任务的执行结果满足授信申请的处理条件时,在目标数据库中获取任务的执行结果并反馈给授信申请的发送端。区别于现有的授信交易处理方法,本发明实施例提供的授信申请处理装置,通过设置本地时间轮和全局时间轮,构成一个分布式时间轮组件,在分布式时间轮组件中处理授信申请,通过在分布式时间轮中处理授信申请对应的任务,在面对海量的交易任务时,能够实现实时处理,提高了交易的处理效率和业务处理的能力。

图4是根据本发明实施例提供的授信申请处理的电子设备的示意图。如图4所示,该电子设备可以是一种计算机设备,其可以包括处理器401以及存储有计算机程序指令的存储器402。

具体地,上述处理器401可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit ,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。

处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的授信申请处理方法。

在一个示例中,上述的计算机设备还可包括通信接口403和总线404。其中,如图4所示,处理器401、存储器402、通信接口403通过总线404连接并完成相互间的通信。

通信接口403,主要用于实现本发明实施例中各模块、设备、单元和/或设备之间的通信。

总线404包括硬件、软件或两者,用于将上述部件彼此耦接在一起。举例来说,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线X10可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

该计算机设备可以执行本发明实施例中的授信申请处理方法,从而实现结合图1和图3描述的授信申请处理方法及装置。

此外,参照图1所描述的授信申请处理方法可通过记录在计算机可读存储介质上的程序(或指令)来实现。例如,如图5所示,根据本发明的示例性实施例,可提供存储指令的计算机可读存储介质501,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行授信申请处理的方法。

上述计算机可读存储介质501中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,应注意,计算机程序还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经在参照图1进行相关方法的描述过程中提及,因此这里为了避免重复将不再进行赘述。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本文发布于:2024-09-23 05:22:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/85146.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议