发明内容
发明人经过分析后发现,与业务系统集成的决策引擎服务的部署和变更都需要研发参与,上线与测试的周期较长。并且规则以文件的形式存在于线上系统。接触人群难以管控,有一定泄密的可能。
而独立部署的决策引擎服务的部署与上线流程在决策服务器内部,相对便于保密管控,但调用决策服务器需要业务系统发起远程调用,决策性能较差,对于高并发业务系统而言,往往成为性能短板。
决策引擎需要支持较大的并发量。并且,因为风险场景实时而多变,决策规则在编写与修改后需要以比较快的速度生效。相关技术无法同时满足这两种要求。
本发明实施例所要解决的一个技术问题是:如何更快速、高效地实现决策部署。
根据本发明一些实施例的第一个方面,提供一种部署方法,包括:对决策逻辑进行封装以生成预先设置的调用接口,作为支持热加载的决策类的接口;将决策类发送给业务系统,业务系统的业务逻辑中包括对预先设置的调用接口的调用逻辑,以便业务系统运行业务逻辑时实例化决策类、并执行决策逻辑。
在一些实施例中,对需要升级的决策逻辑进行修改并重新封装以生成预先设置的调用接口,作为支持热加载的决策类的接口。
在一些实施例中,将决策类发送给业务系统包括:将决策类发送给配置管理系统,以便配置管理系统将决策类作为配置文件进行存储、并响应于业务系统的查询而返回决策类。
在一些实施例中,将决策类发送给业务系统包括:将决策类发送给消息队列组件,以便消息队列组件将决策类发送给作为订阅方的业务系统。
在一些实施例中,将决策类发送给业务系统包括:采用业务系统的公钥对决策类进行加密;将加密后的决策类发送给业务系统;业务系统采用私钥进行解密,以便在解密成功的情况下接受决策类。
在一些实施例中,部署方法还包括:业务系统采用私钥进行解密,在解密成功的情况下将解密获得的决策类与本地的决策类进行比较,并且在根据比较结果判定需要升级决策类的情况下,接受解密获得的决策类。
在一些实施例中,部署方法还包括:在业务逻辑处于运行状态的情况下,业务系统将决策类载入到类定义池中;业务系统在进程内实例化决策类,生成决策类对象,以便业务系统调用决策类对象提供的调用接口以执行决策逻辑。
根据本发明一些实施例的第二个方面,提供一种部署装置,包括:决策类生成模块,被配置为为决策逻辑添加预先设置的调用接口,并生成具有调用接口的、支持热加载的决策类;决策类发送模块,被配置为将决策类发送给业务系统,业务系统的业务逻辑中包括对预先设置的调用接口的调用逻辑,以便业务系统运行业务逻辑时实例化决策类、并执行决策逻辑。
根据本发明一些实施例的第三个方面,提供一种部署装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述任意一种部署方法。
根据本发明一些实施例的第四个方面,提供一种部署系统,包括:前述任意一种部署装置;以及业务系统,被配置为运行业务逻辑时实例化部署装置发送的决策类、并执行实例化的决策类中的决策逻辑。
在一些实施例中,部署系统还包括:决策逻辑分发装置,用于获取部署装置发送的决策类,并将决策类发送给业务系统,决策逻辑分发装置为配置管理系统或者消息队列组件。
根据本发明一些实施例的第五个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任意一种部署方法。
上述发明中的一些实施例具有如下优点或有益效果:通过在业务逻辑中埋入对预先设置的调用接口的调用逻辑,并且独立地对决策逻辑进行编写和封装后再发送给业务系统,以供业务逻辑在本地调用决策类中的决策逻辑。从而在编写、调试决策逻辑的过程中不会对业务逻辑的运行造成影响,提高了上线效率;同时本地调用的方式也不会影响决策逻辑的调用和执行性能。因此,上述实施例的方法可以更快速、高效地实现决策部署。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1示出了根据本发明一些实施例的部署方法的流程示意图。如图1所示,该实施例的部署方法包括步骤S102~S106。
在步骤S102中,对决策逻辑进行封装以生成预先设置的调用接口,作为支持热加载的决策类的接口。
决策逻辑是以计算机可读的方式实现的决策规则,可以通过计算机语言的代码体现。例如,在提交用户订单之前,可以首先根据用户验证信息验证用户身份、再根据历史数据计算该用户是否为恶意用户等等。
支持热加载的目的是实现热更新。热更新是指在程序进程正在运行时,在不退出进程的情况下,修改程序代码逻辑。
在一些实施例中,当在首次定义决策类之后,又需要对决策逻辑进行升级时,可以对需要升级的决策逻辑进行修改并重新封装以生成预先设置的调用接口,作为支持热加载的决策类的接口。从而,可以根据需要,灵活地对决策逻辑进行更新。
在一些实施例中,决策类为Java类或者Scala类。由Java语言和Scala语言编写的类支持热加载,从而可以在业务逻辑不中止的情况下实现类的更新或添加。
在步骤S104中,将决策类发送给业务系统,其中,业务系统的业务逻辑中包括对预先设置的调用接口的调用逻辑。
预先设置的调用接口可以是与业务系统预先协商的。例如,某个业务在执行的过程中需要执行决策A,在执行决策A的过程中需要依据用户身份信息、用户历史数据信息,则可以协商定义调用接口的名称为PolicyA,接口的入参包括用户身份信息、用户历史数据信息。然后,在业务逻辑中,可以包括对PolicyA的调用语句。
由于业务逻辑中已经具备对调用接口的调用逻辑,调用接口的名称、入参等信息也是预先协商且没有改变的,因此不论决策逻辑如何改变,都不会影响到业务逻辑。业务的运行过程无需因决策逻辑的修改而中止或下线。
在一些实施例中,可以通过配置管理系统或者消息队列组件实现决策类的分发。例如,可以将决策类发送给配置管理系统,以便配置管理系统将决策类作为配置文件进行存储、并响应于业务系统的查询而返回决策类;又例如,可以将决策类发送给消息队列组件,以便消息队列组件将决策类发送给作为订阅方的业务系统。
在一些实施例中,将决策类序列化为二进制流,并将二进制流发送给业务系统。从而可以使得业务系统获得的决策类更准确。
在步骤S106中,业务系统运行业务逻辑时实例化决策类、并执行决策逻辑。
业务系统对决策进行热加载的一个示例性的方式为:在业务逻辑处于运行状态的情况下,业务系统将决策类载入到类定义池中,例如JVM(Java Virtual Machine,Java虚拟机)类定义池;业务系统在进程内实例化决策类,生成决策类对象;然后,业务系统调用决策类对象提供的调用接口以执行决策逻辑。如果业务的进程退出,则内存中的决策规则实例自行销毁。
通过在业务逻辑中埋入对预先设置的调用接口的调用逻辑,并且独立地对决策逻辑进行编写和封装后再发送给业务系统,以供业务逻辑在本地调用决策类中的决策逻辑。从而在编写、调试决策逻辑的过程中不会对业务逻辑的运行造成影响,提高了上线效率;同时本地调用的方式也不会影响决策逻辑的调用和执行性能。因此,上述实施例的方法可以更快速、高效地实现决策部署。
为了进一步提高安全性,可以采用加密的方式传输决策类。
在一些实施例中,采用业务系统的公钥对决策类进行加密,并将加密后的决策类发送给业务系统;业务系统采用私钥进行解密,以便在解密成功的情况下接受决策类。加密方法例如为椭圆曲线公钥密码算法SM2或加密算法RSA。
在一些实施例中,业务系统在采用私钥进行解密后,在解密成功的情况下将解密获得的决策类与本地的决策类进行比较,并且在根据比较结果判定需要升级决策类的情况下,接受解密获得的决策类。例如,业务系统可以采用升级后的决策类替换掉原有的决策类,从而实现了决策逻辑的快速更新。
下面参考图2描述本发明部署装置的实施例。
图2示出了根据本发明一些实施例的部署装置的结构示意图。如图2所示,该实施例的部署装置200包括:决策类生成模块2100,被配置为为决策逻辑添加预先设置的调用接口,并生成具有调用接口的、支持热加载的决策类;决策类发送模块2200,被配置为将决策类发送给业务系统,其中,业务系统的业务逻辑中包括对预先设置的调用接口的调用逻辑,以便业务系统运行业务逻辑时实例化决策类、并执行决策逻辑。
在一些实施例中,决策类发送模块2200进一步被配置为将决策类发送给配置管理系统,以便配置管理系统将决策类作为配置文件进行存储、并响应于业务系统的查询而返回决策类。
在一些实施例中,决策类发送模块2200进一步被配置为将决策类发送给消息队列组件,以便消息队列组件将决策类发送给作为订阅方的业务系统。
在一些实施例中,决策类发送模块2200进一步被配置为将决策类序列化为二进制流,并将二进制流发送给业务系统。
在一些实施例中,决策类发送模块2200进一步被配置为采用业务系统的公钥对决策类进行加密;将加密后的决策类发送给业务系统;业务系统采用私钥进行解密,以便在解密成功的情况下接受决策类。
在一些实施例中,加密方法为椭圆曲线公钥密码算法SM2或加密算法RSA。
在一些实施例中,决策类为Java类或者Scala类。
图3示出了根据本发明一些实施例的部署系统的结构示意图。如图3所示,该实施例的部署系统30包括部署装置310;以及业务系统320,被配置为运行业务逻辑时实例化部署装置发送的决策类、并执行实例化的决策类中的决策逻辑。
在一些实施例中,部署系统30还包括:决策逻辑分发装置330,用于获取部署装置310发送的决策类,并将决策类发送给业务系统320,其中,决策逻辑分发装置330为配置管理系统或者消息队列组件。
配置管理系统例如为Zookeeper工具;消息队列组件例如为Kafka、ActiveMQ。在一些实施例中,如果业务系统的服务器较少,并发程度不高,可采用Zookeeper;如果并发程度较高,可以采用消息队列进行决策类的分发。
从而,决策逻辑分发装置作为中间件,可以将决策逻辑集部署至大量应用服务器中。
图4示出了根据本发明另一些实施例的部署装置的结构示意图。如图4所示,该实施例的部署装置40包括:存储器410以及耦接至该存储器410的处理器420,处理器420被配置为基于存储在存储器410中的指令,执行前述任意一个实施例中的部署方法。
其中,存储器410例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图5示出了根据本发明又一些实施例的部署装置的结构示意图。如图5所示,该实施例的部署装置50包括:存储器510以及处理器520,还可以包括输入输出接口530、网络接口540、存储接口550等。这些接口530,540,550以及存储器510和处理器520之间例如可以通过总线560连接。其中,输入输出接口530为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为SD卡、U盘等外置存储设备提供连接接口。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种部署方法。
本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。