CN118229327A - 定价规则配置方法、装置、设备及存储介质 - Google Patents
定价规则配置方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN118229327A CN118229327A CN202410420423.2A CN202410420423A CN118229327A CN 118229327 A CN118229327 A CN 118229327A CN 202410420423 A CN202410420423 A CN 202410420423A CN 118229327 A CN118229327 A CN 118229327A
- Authority
- CN
- China
- Prior art keywords
- pricing
- pricing rule
- class
- cache
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004140 cleaning Methods 0.000 claims description 51
- 238000012360 testing method Methods 0.000 claims description 41
- 239000000872 buffer Substances 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 5
- 239000012160 loading buffer Substances 0.000 claims 4
- 238000012545 processing Methods 0.000 abstract description 15
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种定价规则配置方法、装置、设备及存储介质。涉及数据处理技术领域。该方法包括:获取定价规则配置列表;解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据;将结构化的定价规则构造为定价规则Java文件;将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。本申请的方法,提高了定价规则配置效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种定价规则配置方法、装置、设备及存储介质。
背景技术
随着利率市场化的加深,贷款市场报价利率(Loan Prime Rate,LPR)在对公存贷款业务场景中被大量使用。LPR在每月固定时间发布新利率值,随之而来的是大量的存贷款业务的定价授权变化。为了适应和快速响应利率市场化带来的变化,银行需要一个规则引擎工具,能够根据不同授权场景、不同分行特色来快速配置定价授权规则。
但目前已有的规则引擎工具,都是通用型面向技术开发的工具,没有具体的业务场景,没有技术基础的人员难以理解使用,且对于多规则和复杂字段的业务场景支持较差,难以做到很好的用户体验,查询和维护性能较差,难以满足日常使用。
发明内容
本申请提供一种定价规则配置方法、装置、设备及存储介质,可提高定价规则配置效率。
第一方面,本申请提供一种定价规则配置方法,包括:
获取定价规则配置列表;解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据;将结构化的定价规则构造为定价规则Java文件;将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
第二方面,本申请提供一种定价规则配置装置,包括:
获取模块,用于获取定价规则配置列表;
解析模块,用于解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据;
构造模块,用于将结构化的定价规则构造为定价规则Java文件;
加载模块,用于将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
第三方面,本申请提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现如第一方面任一种实现方式的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面任一种实现方式的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面任一种实现方式的方法。
本申请提供的定价规则配置方法、装置、设备及存储介质,在获取定价规则配置列表后,解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据,然后将结构化的定价规则构造为定价规则Java文件,最后将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中,由于采用Java和class处理方式,大大提升了规则查询效率,扩展性能好,无论多复杂的逻辑判断都能实现,且采用了灰度缓存策略,提高了业务部署效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的定价规则配置方法的流程图一;
图2为本申请实施例提供的定价规则配置方法的流程图二;
图3为上述定价规则引擎界面配置逻辑示意图;
图4为本申请实施例提供的定价规则引擎工具核心规则执行逻辑流程示意图;
图5为本申请实施例提供的定价规则配置装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
需要说明的是,在本申请实施例中,可能提及某些软件、组件、模型等业界已有方案,应当将它们认为是示范性的,其目的仅仅是为了说明本申请技术方案实施中的可行性,但并不意味着申请人已经或者必然用到了该方案。
在对LPR利率应用场景进行分析后可以发现,对于定价类场景,目前的定价规则引擎工具存在如下问题:1)大多数工具都是面向技术人员使用的,很多术语、场景、操作逻辑,没有技术基础的人员会理解困难。2)大多数工具对于多规则和复杂字段的业务场景支持较差。一方面是配置困难,一个用户要维护几万条规则,工具很难做到很好的用户体验;另一方面是工具对全部几十万条规则的查询和维护的性能比较差,难以满足日常使用。3)大多数工具规则测试困难,基本配置即生效,没法进行灰度测试。4)大多数工具规则加载到内存中后,就无法修改,导致内存中的数据越来越多,除非重启系统否则无法清理JVM中的规则。
基于以上问题,急需一个同时满足支持操作简便、用户交互好、性能高效、查询精准的规则查询配置引擎,以满足在利率市场化的大环境下的快速响应变化,提升业务效率。
图1为本申请实施例提供的定价规则配置方法的流程图一。如图1所示,该定价规则配置方法包括:
步骤S110、获取定价规则配置列表。
本实施例的定价规则配置方法可以应用于任一种需要采用计算机系统对定价规则进行配置的场景。其中定价规则可以是银行或其他金融机构对各种业务产品的定价规则,根据业务的不同种类、不同用户特点等情况,可能需要数量众多的定价规则匹配各种不同的业务。为了维护数量众多的定价规则,需要使用定价规则配置工具进行定价规则的配置以及为业务进行匹配授权。本实施例提供的定价规则配置方法可以由部署于计算机系统中的任一计算机或服务器执行。
首先需要获取定价规则配置列表,定价规则配置列表为定价规则配置的集合,其中包括多条定价规则配置。定价规则配置列表可以为EXCEL、TXT、DAT等多种格式的数据文件形式。
进一步地,获取定价规则配置列表,包括:根据用户输入的定价规则配置参数生成定价规则配置列表。其中,用户输入定价规则配置参数的前端页面的页面样式和元素分布根据用户在后台页面的拖曳配置确定。另外,根据用户输入的定价规则配置参数生成定价规则配置列表之前,还可以对用户的身份信息进行认证和鉴权。
步骤S120、解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据;
由于定价规则配置列表的形式可能为多种不同格式的文件,不同的定价规则的格式可能也不相同,为了提高对定价规则进行匹配查询的效率,可以对定价规则配置列表进行解析,将定价规则配置列表中的定价规则转换为结构化数据。传统规则引擎的规则配置多为通过页面逐条维护,此方式仅适用于数量较少的规则需求。为了方便用户能够更快速便捷地维护几万条规则,可以对定价规则配置列表,这样可以读取解析EXCEL、TXT、DAT等格式的定价规则配置列表文件,一次性批量导入几万条甚至几十万条规则,系统通过并发和异步解析规则配置,转为结构化数据并保存入数据库。
步骤S130、将结构化的定价规则构造为定价规则Java文件;
传统定价规则配置引擎,会使用xml配置或者伪代码来构造规则数据,这样做的缺点很明显,一方面xml和伪代码在排查错误时比较困难,一方面是需要开发单独的解释器来执行xml或伪代码。所以本申请实施例充分利用Java和JVM的特性,将定价规则数据通过指定算法逻辑,构造成一个完整Java文件,其包含可执行静态方法入口,以及所有规则逻辑判断处理和输出处理。
步骤S140、将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
因为通过步骤S130构造出Java文件,所以需要将Java文件编译成定价规则类(即class文件),用类加载缓存(ClassLoaderCache)读取加载到JVM中。其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。也就是ClassLoaderCache分为灰度缓存和正式缓存,缓存也支持动态修改,当Class更新时,将新的Class加入ClassLoaderCache中,旧的Class会被覆盖,解决了JVM不能重复加载同名Class的问题。在用类加载缓存读取定价规则类加载至JVM中后,在定价业务调用时,根据灰度设置,从ClassLoderCache中获取灰度class或正式class,执行主逻辑,返回业务调用方结果。
本实施例提供的定价规则配置方法,在获取定价规则配置列表后,解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据,然后将结构化的定价规则构造为定价规则Java文件,最后将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中,由于采用Java和class处理方式,大大提升了规则查询效率,扩展性能好,无论多复杂的逻辑判断都能实现,且采用了灰度缓存策略,提高了业务部署效率。
图2为本申请实施例提供的定价规则配置方法的流程图二。如图2所示,该定价规则配置方法包括:
步骤S210,获取定价规则配置列表。
步骤S220,解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据。
步骤S230,将结构化的定价规则构造为定价规则Java文件。
步骤S240,将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
步骤S250,根据定价业务调用请求,通过JVM在类加载缓存中获取与定价业务对应的定价规则。
具体地,在进行了定价规则配置之后,在有定价业务调用请求时,通过JVM在类加载缓存中查询获取对应的定价规则,由于采用了Java和Class处理方式,大大提升了规则查询效率。
进一步地,灰度测试可以是可选的方式,通过设置灰度缓存,可以使定价规则先存储在灰度缓存中,从而可以避免配置的定价规则存在缺陷时业务长期执行带来的影响。根据定价业务调用请求的属性确定是否匹配灰度测试条件;若匹配灰度测试条件,则通过JVM在灰度缓存中获取与定价业务对应的定价规则;若不匹配灰度测试条件,则通过JVM在正式缓存中获取与定价业务对应的定价规则。灰度测试条件匹配的条件包括如下之一:定价业务调用请求的流量属性匹配灰度测试流量,定价业务调用请求所属地区属性匹配灰度测试地区,定价业务调用请求的业务场景匹配灰度测试业务场景。缓存管理器下可设置两个缓存大类:灰度缓存和正式缓存。缓存对象先在灰度缓存中验证通过,再复制到正式缓存下。缓存内保存定价规则类(ClassLoader)对象,ClassLoader负责创建和加载Class。规则提交部署后,选择灰度路径,有按流量进行灰度测试、按地区进行灰度测试、按业务场景进行灰度测试。当具体业务请求进来时,会根据灰度路径判断请求灰度缓存或正式缓存。
在一实施例中,若灰度测试周期结束,则判断灰度缓存中存储的定价规则类是否满足预设阈值,灰度测试周期结束包括灰度测试时间周期结束或者灰度测试数量周期结束;将满足预设阈值的定价规则类复制到正式缓存中。其中,判断灰度缓存中存储的定价规则类是否满足预设阈值的标准是判断灰度缓存中存储各定价规则类对应的定价业务执行成功率是否满足预设成功率阈值。也就是说,灰度测试周期可以是一个时间周期,每当时间周期到期,就将灰度缓存中满足预设阈值的定价规则类复制到正式缓存中。或者灰度测试周期是一个数量周期,每当灰度缓存中经过测试的定价规则数量达到数量阈值,就将灰度缓存中满足预设阈值的定价规则类复制到正式缓存中。而满足灰度缓存中存储各定价规则类对应的定价业务执行成功率是否满足预设成功率阈值,是从业务层面判断业务的执行成功率,例如业务执行成功率超过99%则认为该定价业务对应的定价规则满足预设成功率阈值,可以将对应的灰度缓存类复制到正式缓存中。当讲灰度缓存中存储的定价规则类复制到正式缓存中,则删除灰度缓存中的相应内容。另外,用户也可以通过手动方式将灰度缓存中存储的内容存储至正式缓存。
进一步地,本申请实施例还提供缓存清理策略。对于类加载缓存,判断类加载缓存是否符合预设清理策略,预设清理策略包括基于空间的清理、基于时间的清理或基于业务权重的清理;若类加载缓存是否符合预设清理策略则基于预设清理策略清理类加载缓存。
可以监听缓存内的对象,根据自定义清理策略及时清理过期对象,避免缓存占用过多空间。本申请实施例提供以下3种清理策略:1)基于空间的清理:当缓存容量达到最大值时,进行缓存清理。2)基于时间的清理:根据访问时间或写入时间超过指定时间后,进行缓存清理。3)基于权重的清理:根据自定义权重策略来进行缓存清理。
以上策略基本能满足所有清理需求,即提供了默认的基于空间容量和时间有效性的清理策略,也提供能够自定义清理策略使其更符合业务场景的清理模式。几种清理策略的使用和原理如下:
1、基于空间的清理
在创建缓存时,指定缓存容量最大值,即缓存内只能存放最多几个对象,超出则触发清理机制。用这种方式创建的缓存,缓存管理器会使用一个双向链表来存储缓存对象,链表头部保存最后访问的缓存对象,链表尾部保存最近访问的缓存对象。设权重值为W,初始化权重常数为k,最近调用的时间t_a,基于空间的清理策略的核心算法为:
权重越大则其在双向链表的位置越靠下,清理概率越低。当内部对象数量超过缓存容量最大值时,触发缓存内部的消息事件,缓存管理器将双向链表的头部对象淘汰掉。
2、基于时间的清理
在创建缓存时,可指定基于访问时间或基于写入时间的失效策略,即再最后访问时间、写入时间超过指定时间后,自动清理缓存。用这种方式创建的缓存,缓存管理器会使用一个分层结构来存储缓存对象,顶层保存最近访问或最近写入的缓存对象,底层保存最近最少访问或最早写入的缓存对象。设权重值为W,缓存超时参数为t,超时时间单位转换成秒为T_u,当前时间为t_c,最近调用的时间t_a,其计算公式为:
E=t*Tu-(tc-ta)
缓存管理器内部会启动一个守护线程定时轮询,从顶层开始逐层向下查找,直到权重小于0的缓存对象,并将其及以下的对象淘汰掉。
3、基于权重的清理
在创建缓存时,指定权重公式,其权重结果越大,被清理的概率越低:用这种方式创建的缓存,缓存管理器会使用一个优先队列来存储缓存对象,他会根据公式计算后的权重值来快速排序。当一个对象被创建并存入缓存时,缓存管理器会根据自定义权重函数为该缓存对象计算一个权重值,将权重值传递给优先队列后,优先队列会根据该值进行排序,权重越低的缓存对象保存越靠前。我们在本规则引擎种,基于自定义权重策略,设计了一个复杂权重计算方式来控制缓存的清理,设权重值为W,初始化权重常数为k,缓存对象每小时被调用次数c,当前时间为t_c,最近调用的时间t_a,其计算公式为:
根据其在时间段n内请求次数和最后请求时间计算权重,请求次数越多,最后请求时间越近,权重越大,则在优先队列种保存的越靠后。当缓存需要被淘汰时,缓存管理器会在优先队列中取出权重最低也就是保存最靠前的缓存对象进行淘汰。
基于上述实施例提供的定价规则配置方法,可以设计一个定价规则引擎工具。动态配置规则引擎前端页面的页面设计框架,使其能适应不同业务场景,适配不同终端,其最上层的框架包括以下内容:
1、后台服务层:提供给开发者、管理员和运维人员使用的图形管理界面,包括设计界面、管理界面和日志查询界面。
2、用户显示层:提供给业务人员使用的页面,由应用设计器设计而成的动态界面。
3、数据服务层:提供各种持久化数据存储,来记录界面设计和执行过程的所有数据。
在后台服务层,提供多个工具,来辅助用户显示层的配置和逻辑处理,所以后台服务层包含以下工具:
1、应用设计器:允许开发者在设计界面中通过拖拉拽页面元素来设计用户显示层的页面样式和按钮逻辑。我们使用LowCode-Engine框架来搭建设计器。
2、表单设计器:用于创建和定制数据输入输出表单工具,并绑定集成服务。
3、集成服务:发布规则引擎的基本服务、配置基本服务之间的逻辑关系、基本服务与外部服务的关系、基本服务与外部数据库的逻辑关系的服务集成能力。
4、执行引擎:解释和执行应用设计器逻辑的引擎,将用户设计的应用转化为用户显示层可渲染的代码。通过LowCode-Engine引擎生成前端代码,并根据已有风格的样式重新渲染后,保存入库,以供用户显示层来查询。
5、安全和身份认证:管理用户身份认证和鉴权信息。使用Shiro框架进行用户身份认证和鉴权,确保每个用户的访问都是符合其身份的。
6、监控和分析:用于监控应用程序性能、用户行为和系统运行状况。使用ELK大数据框架来保存和分析日志数据。
在用户显示层,使用VUE框架搭建前端显示,通过API请求后台服务层提供的集成服务,渲染用户界面。
在提供后台服务功能和用户显示功能之后,还需要提供持久化存储功能,包括以下内容:
1、数据存储:用于存储应用设计器、集成服务等数据的数据库,我们使用MySql数据库,并使用主从方式搭建。
2、缓存:用于存储执行引擎生成的可执行代码的缓存数据库,我们使用的是Redis缓存数据库,并使用哨兵模式搭建。
3、大数据存储:用于存放用户行为数据、监控日志等技术信息的大数据数据库。我们使用ElasticSearch作为日志存储的数据库,使用Logstash作为ES数据的同步软件,使用Kibana控制台进行日志的查询和分析。
图3为上述定价规则引擎界面配置逻辑示意图。与其他页面有了界面配置引擎相比,上述引擎具有以下创新和优势:
1、在配置引擎中进行拖拉拽配置页面后,可以直接发布生效,无需进行重启或变更代码。传统页面配置工具只是一个辅助,生成代码后需要开发人员引入代码工程中上线部署。
2、页面配置支持移动端和PC端公用一套配置,自适应效果。传统页面配置移动端和PC端的样式不同布局不同需要配置2套代码。
3、页面配置引擎是一个可以完全独立运行的系统,集成鉴权系统和日志系统,允许为不同页面模块设置不同权限。传统页面配置只是一个工具,即时有也只是一个简单鉴权功能,无法自定义。
规则引擎后台的核心功能,就是如何在几十万甚至几百万条规则中,精准且快速命中需要的规则。由于传统数据库中结构化数据的查询效率,主要依赖于表索引、磁盘IO、网络IO等众多因素,并且规则数量巨大,每条规则的字段逻辑复杂,导致直接查询数据库效率会比较低,故此我们设计出一套执行逻辑,以此提升查询效率和命中率,具体包含以下组件:
1、文件解析器:传统规则引擎的规则配置多为通过页面逐条维护,此方式仅适用于数量较少的规则需求。所以我们为了方便用户能够更快速便捷地维护几万条规则,引入文件解析器,可以读取解析EXCEL、TXT、DAT等格式的文件,一次性批量导入几万条甚至几十万条规则,系统通过并发和异步解析规则配置,转为结构化数据并保存入数据库。
2、Java构造器:传统规则引擎,会使用xml配置或者伪代码来构造规则数据,这样做的缺点很明显,一方面xml和伪代码在排查错误时比较困难,一方面是需要开发单独的解释器来执行xml或伪代码。所以我们充分利用JAVA和JVM的特性,将规则数据,通过指定算法逻辑,构造成一个完整Java文件,其包含可执行静态方法入口,以及所有规则逻辑判断处理和输出处理。
3、Class缓存管理器:因为我们使用第2点的Java构造器构造出Java文件,所以我们需要将Java文件编译成class文件,用ClassLoaderCache读取加载到JVM中,ClassLoaderCache分为灰度缓存和正式缓存,缓存也支持动态修改,当Class更新时,将新的Class加入ClassLoaderCache中,旧的Class会被覆盖,解决了JVM不能重复加载同名Class的问题。
4、执行引擎:业务调用时,根据灰度设置,从ClassLoderCache中获取灰度class或正式class,执行主逻辑,返回调用方结果。
图4为本申请实施例提供的定价规则引擎工具核心规则执行逻辑流程示意图。
上述解析、构造、编译、缓存、执行的逻辑,相比传统规则引擎具有以下创新:
1、新增规则更方便。传统规则引擎通过页面一条一条配置,而我们的规则引擎可以通过解析文件进行批量规则维护。
2、规则验证更方便。传统规则引擎规则一旦配置就全范围生效,而我们的规则引擎拥有灰度发布功能,允许按照流量、机构、业务等条件进行灰度发布,灰度验证通过再全范围正式发布。
3、构建和规则编译更快。我们的构建和编译都使用多线程,整个过程在毫秒级别,效率相比传统规则引擎要快上十倍不止。并且支持规则粒度的构建编译和更新,更加灵活。
4、使用ClassLoaderCache来管理class,解决了jvm中不能重复加载同名class的缺陷,允许规则及时更新及时生效。相比传统规则引擎只会在jvm中堆积不同历史版本而无法清理导致最后查询效率逐渐变低,最后只能重启应用来回复效率。
本申请实施例提供的定价规则引擎,具有以下优点:
1)通过界面配置引擎灵活配置各种业务场景的规则用户页面,不同业务场景、不同岗位人员均可自定义界面,用户体验更好。
2)将结构化的规则数据转换成可执行的Java和class文件,大大提升了规则查询效率,扩展性能好,无论多复杂的逻辑判断都能实现。
3)自定义清理策略的缓存管理器,即提供了默认的清理策略,也能根据不同业务场景自定义清理策略,让系统在保持高效率查询的前提下能稳定运行。
图5为本申请实施例提供的定价规则配置装置的结构示意图。如图5所示,该定价规则配置装置,包括:获取模块510、解析模块520、构造模块530、加载模块540。
其中,获取模块510,用于获取定价规则配置列表。
解析模块520,用于解析定价规则配置列表,将定价规则配置列表中的定价规则转换为结构化数据。
构造模块530,用于将结构化的定价规则构造为定价规则Java文件。
加载模块540,用于将定价规则Java文件编译为定价规则类,并用类加载缓存读取定价规则类加载至JVM中,其中,类加载缓存包括灰度缓存和正式缓存,定价规则类先存入灰度缓存,在灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
在一些实施例中,定价规则配置装置还包括查询模块,用于根据定价业务调用请求,通过JVM在类加载缓存中获取与定价业务对应的定价规则。
在一些实施例中,查询模块,具体用于根据定价业务调用请求的属性确定是否匹配灰度测试条件;若匹配灰度测试条件,则通过JVM在灰度缓存中获取与定价业务对应的定价规则;若不匹配灰度测试条件,则通过JVM在正式缓存中获取与定价业务对应的定价规则。
在一些实施例中,匹配灰度测试条件包括如下之一:定价业务调用请求的流量属性匹配灰度测试流量,定价业务调用请求所属地区属性匹配灰度测试地区,定价业务调用请求的业务场景匹配灰度测试业务场景。
在一些实施例中,加载模块540,具体用于若灰度测试周期结束,则判断灰度缓存中存储的定价规则类是否满足预设阈值,灰度测试周期结束包括灰度测试时间周期结束或者灰度测试数量周期结束;将满足预设阈值的定价规则类复制到正式缓存中。
在一些实施例中,加载模块540,具体用于判断灰度缓存中存储各定价规则类对应的定价业务执行成功率是否满足预设成功率阈值。
在一些实施例中,定价规则配置装置还包括清理模块,用于判断类加载缓存是否符合预设清理策略,预设清理策略包括基于空间的清理、基于时间的清理或基于业务权重的清理;若类加载缓存是否符合预设清理策略则基于预设清理策略清理类加载缓存。
在一些实施例中,获取模块510,具体用于根据用户输入的定价规则配置参数生成定价规则配置列表。
在一些实施例中,用户输入定价规则配置参数的前端页面的页面样式和元素分布根据用户在后台页面的拖曳配置确定。
在一些实施例中,定价规则配置装置还包括认证模块,用于对用户的身份信息进行认证和鉴权。
本申请实施例提供的定价规则配置装置,可用于执行上述实施例中定价规则配置方法的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,获取模块510、解析模块520、构造模块530、加载模块540、查询模块、清理模块均可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上数据获取模块510、解析模块520、构造模块530、加载模块540、查询模块、清理模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图6为本申请实施例提供的电子设备的结构示意图。如图6所示,该电子设备可以包括:收发器61、处理器62、存储器63。
处理器62执行存储器存储的计算机执行指令,使得处理器62执行上述实施例中的方案。处理器62可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器63通过系统总线与处理器62连接并完成相互间的通信,存储器63用于存储计算机程序指令。
收发器61可以用于获取待运行任务和待运行任务的配置信息。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(randomaccess memory,RAM),也可能还包括非易失性存储器(non-volatile memory)。
本申请实施例提供的电子设备,可以是计算机系统中可以进行数据处理的计算机或服务器。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中定价规则配置方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例定价规则配置方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中定价规则配置方法的技术方案。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (14)
1.一种定价规则配置方法,其特征在于,包括:
获取定价规则配置列表;
解析所述定价规则配置列表,将所述定价规则配置列表中的定价规则转换为结构化数据;
将结构化的定价规则构造为定价规则Java文件;
将所述定价规则Java文件编译为定价规则类,并用类加载缓存读取所述定价规则类加载至JVM中,其中,所述类加载缓存包括灰度缓存和正式缓存,定价规则类先存入所述灰度缓存,在所述灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
2.根据权利要求1所述的方法,其特征在于,所述将所述定价规则Java文件编译为定价规则类,并用类加载缓存读取所述定价规则类加载至JVM中之后,还包括:
根据定价业务调用请求,通过所述JVM在所述类加载缓存中获取与所述定价业务对应的定价规则。
3.根据权利要求2所述的方法,其特征在于,所述根据定价业务调用请求,通过所述JVM在所述类加载缓存中获取与所述定价业务对应的定价规则,包括:
根据所述定价业务调用请求的属性确定是否匹配灰度测试条件;
若匹配灰度测试条件,则通过所述JVM在所述灰度缓存中获取与所述定价业务对应的定价规则;
若不匹配灰度测试条件,则通过所述JVM在所述正式缓存中获取与所述定价业务对应的定价规则。
4.根据权利要求3所述的方法,其特征在于,所述匹配灰度测试条件包括如下之一:所述定价业务调用请求的流量属性匹配灰度测试流量,所述定价业务调用请求所属地区属性匹配灰度测试地区,所述定价业务调用请求的业务场景匹配灰度测试业务场景。
5.根据权利要求1所述的方法,其特征在于,所述在所述灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中,包括:
若灰度测试周期结束,则判断所述灰度缓存中存储的定价规则类是否满足预设阈值,所述灰度测试周期结束包括灰度测试时间周期结束或者灰度测试数量周期结束;
将满足预设阈值的定价规则类复制到正式缓存中。
6.根据权利要求5所述的方法,其特征在于,所述判断所述灰度缓存中存储的定价规则类是否满足预设阈值,包括:
判断所述灰度缓存中存储各定价规则类对应的定价业务执行成功率是否满足预设成功率阈值。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述将所述定价规则Java文件编译为定价规则类,并用类加载缓存读取所述定价规则类加载至JVM中之后,还包括:
判断所述类加载缓存是否符合预设清理策略,所述预设清理策略包括基于空间的清理、基于时间的清理或基于业务权重的清理;
若所述类加载缓存符合预设清理策略则基于预设清理策略清理所述类加载缓存。
8.根据权利要求1~6任一项所述的方法,其特征在于,所述获取定价规则配置列表,包括:
根据用户输入的定价规则配置参数生成所述定价规则配置列表。
9.根据权利要求8所述的方法,其特征在于,用户输入所述定价规则配置参数的前端页面的页面样式和元素分布根据用户在后台页面的拖曳配置确定。
10.根据权利要求8所述的方法,其特征在于,所述根据用户输入的定价规则配置参数生成所述定价规则配置列表之前,包括:
对所述用户的身份信息进行认证和鉴权。
11.一种定价规则配置装置,其特征在于,包括:
获取模块,用于获取定价规则配置列表;
解析模块,用于解析所述定价规则配置列表,将所述定价规则配置列表中的定价规则转换为结构化数据;
构造模块,用于将结构化的定价规则构造为定价规则Java文件;
加载模块,用于将所述定价规则Java文件编译为定价规则类,并用类加载缓存读取所述定价规则类加载至JVM中,其中,所述类加载缓存包括灰度缓存和正式缓存,定价规则类先存入所述灰度缓存,在所述灰度缓存中存储的定价规则类满足预设阈值时将满足预设阈值的定价规则类复制到正式缓存中。
12.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-10中任一项所述的方法。
14.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410420423.2A CN118229327A (zh) | 2024-04-09 | 2024-04-09 | 定价规则配置方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410420423.2A CN118229327A (zh) | 2024-04-09 | 2024-04-09 | 定价规则配置方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118229327A true CN118229327A (zh) | 2024-06-21 |
Family
ID=91497632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410420423.2A Pending CN118229327A (zh) | 2024-04-09 | 2024-04-09 | 定价规则配置方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118229327A (zh) |
-
2024
- 2024-04-09 CN CN202410420423.2A patent/CN118229327A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7689665B2 (en) | Dynamically loading scripts | |
JP2020522790A (ja) | 異種にプログラムされたデータ処理システムの自動依存性アナライザ | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
US11645340B2 (en) | Data store interface including application configurable format constraints for use in accessing or visualization of values stored an in-memory cache | |
US20040250257A1 (en) | System and method for generator state object validation | |
US11334474B2 (en) | Fast change impact analysis tool for large-scale software systems | |
CN111538659B (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
US20040250258A1 (en) | System and method for rule based object navigation | |
CN114595201A (zh) | 一种接口访问日志采集记录查询方法、设备及存储介质 | |
US11210206B1 (en) | Spoofing stateful dependencies during software testing | |
CN114995859A (zh) | 页面热更新方法、装置、设备及存储介质 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN109246077B (zh) | 分布式并发交易校验方法、装置和计算机存储介质 | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
CN118229327A (zh) | 定价规则配置方法、装置、设备及存储介质 | |
CN112925523B (zh) | 对象比较方法、装置、设备及计算机可读介质 | |
CN115934537A (zh) | 接口测试工具生成方法、装置、设备、介质及产品 | |
CN112597036B (zh) | 一种通用测试挡板方法及装置 | |
CN111538491B (zh) | 数据事件处理方法、装置、设备和存储介质 | |
CN112347794A (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
US20040249940A1 (en) | System and method for asynchronous resource management | |
US20240103853A1 (en) | Code maintenance system | |
WO2024139538A1 (zh) | 脚本生成方法、装置、计算设备、系统及可读存储介质 | |
CN113806309B (zh) | 基于分布式锁的元数据删除方法、系统、终端及存储介质 | |
US11960560B1 (en) | Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |