动手撸一个规则引擎(二):方案解析

写在前面

规则引擎能够搞啥?通常使用场景,是经过可视化节目进行拖拉或者简单的操做指定流程和规则,将规则输入获得目标输出。性能

交易系统中的规则引擎

规则编排的过程是各类条件的组合,相似于搭积木,指定逻辑规则,细化逻辑因子,好比指定选人规则,一个用户id进来以后根据指定的不一样逻辑规则获得该用户能够发的券集合。一样能够用来筛选商品,筛选营销规则等。编码

在交易系统中主要是和用户和营销策略相关,好比根据历史订单,是否会员信息,是否门店新老客等规则因子,组合规则因子,也就是指定决策逻辑。动态的去响应不一样用户的不一样策略。3d

规则引擎的难点

规则引擎的难点在于:规则的易变和定制化。blog

规则每每处于热更新的状态,在产品决策过程当中由于ABTest等缘由,可能随时调整规则。同时一套营销规则可能由于用户画像不一样致使千人前面的策略,有必定的定制特色。产品

在没有规则引擎以前,系统实现规则引擎通常采用硬编码,if/else登方式。哪怕是将规则相关逻辑单独抽离到规则模块,代码规则实现存在硬编码难以热更新的问题依然存在。可视化

可是硬编码并不是一无可取,较粗粒度的规则仍是须要固化到系统中,这样能够达到更好封装和抽象的目的,下降必定的迭代成本。配置

规则引擎系统

规则引擎被定义为系统中的一组规则组件,能够将业务逻辑和决策逻辑进行拆分,抽离出来。im

规则引擎的关键词:d3

  • 实事:用户的输入信息为实事
  • 规则:定制化的业务规则逻辑
  • 结果:规则加工和执行以后产生的结果

为更好的固化和沉淀一部分规则到系统中,咱们通常创建一套规则管理系统,以可视化方式提供给使用方,在可视化界面操做规则编排,规则的变动最好加上版本,以区分和热更新,避免硬切规则形成的数据不一致状况,能够平滑过分到下一个规则中。数据

规则引擎的难点在于,对于配置化的规则进行系统性的解析和业务逻辑的执行,当咱们经过存储系统对规则进行存储以后,在将规则以原子性的方式拉取出来后,执行规则便成了比较复杂的地方了,通常能够采用Drools,Aviator等三方引擎,也能够本身定制。

  • Drools:适用于风控金融,用起来比较复杂
  • Grovvy,JPython:能够嵌入到系统中进行逻辑执行,可是性能存在考量空间
相关文章
相关标签/搜索