• 业务中多变量多场景计算引擎分析


    一、设计目标

        1. 满足多变业务需求:动态修改    ==> 动态脚本

        2. 满足复杂逻辑计算:不仅要支持简单表达式,还是支持多语句循环判断、预定义函数等需求 ==> 完整脚本语言(groovy、javascript、python等),而非表达式(mvel、aviator、fel、expr4J等)

        3. 快速计算获得结果:最好支持脚本预编译(groovy)

        4. 语言语法简单易学:类动态语言处理,属性可以直接访问(groovy,javascript,python),列表支持声明式处理等(groovy3,javascript,python)

        5. 多个变量同时计算:一次性计算好某个场景下的多变量结果返回

        6. 多个场景同时支持:作为通用计算引擎,支持多场景

    二、计算流程

        1. 请求数据:{},json对象,内部包括json数组和json对象的多层嵌套 

        2. 预定义函数:指定场景下很多变量计算公共使用的函数,比如账单工具中的datediff,比如人行工具中的最近几期 L24(X),L60(X)

        3. 预处理【可选】:字典值映射等

        4. 数据加工:

            - 属性访问:req.xxx.yyy.zzz   多层次数据可以直接用.访问

            - 列表统计:req.xxx.nnn        得到数组后可以采用声明式处理 :过滤、映射、排序等中间操作,sum、count、max、min等归约操作 (_StreamAPI.java 

            - 特殊场景:比如从某个条件A开始循环累计到某个条件B得到某个值,然后以这个值作为区分点进行进一步操作。for循环break后多行脚本处理

        5. 结果输出:{},json对象,(code、msg、data)其中data为json对象,内部包含每个变量的计算结果值

    三、接口分析

        1. 设置变量:可以自定义某个场景下的多个变量计算公式,同时支持设置这个场景下的预处理脚本(包含预定义函数及数据预处理)

        2. 查看变量:设置完毕后,可以查看验证下场景下的变量,及多个变量同时计算的封装整体脚本内容

        3. 评估脚本:给出数据,得到结果

    四、部署方式

        1. SDK提供:gav引入后即可直接使用

        2. 独立服务:计算压力比较大时进行动态扩展

  • 相关阅读:
    机器学习-数据可视化神器matplotlib学习之路(四)
    [AspNetCore]CookieAuthentication禁用自动跳转到登录页
    [AspNetCore3.1] 使用Serilog记录日志
    [排序算法二]选择排序
    [排序算法一]冒泡排序
    Ocelot 网关 和 consul 服务发现
    AspNetCore3.0 和 JWT
    在AspNetCore3.0中使用Autofac
    【ElasticSearch+NetCore 第二篇】Nest封装
    【ElasticSearch+NetCore 第一篇】在Windows上安装部署ElasticSearch和ElasticSearch-head
  • 原文地址:https://www.cnblogs.com/hepengju/p/15507347.html
Copyright © 2020-2023  润新知