规则引擎

作者: 杰森斯坦sen | 来源:发表于2019-06-27 21:22 被阅读128次

场景

业务风控,主要是下单、支付、优惠券、红包、签到等行为的风险控制,对抗的风险行为包括黄牛刷单、恶意占用库存、机器领券、撸羊毛等。

转账例子

  • 账户的信用等级,不同等级的账户每笔转账的最大金额不同
  • 记录转账明细

比如一个“人”,除了有id、姓名、性别这些属性外,还应该有“走路”、“吃饭”等这些行为,这些行为是天然属于“人”这个实体的,而我们定义的bean都是一种“失血模型”,只有get/set等简单方法,所有的行为逻辑全部上升到了service层,这就导致了service层过于臃肿,并且很难复用已有的逻辑,最后形成了各个service之间错综复杂的关联关系,在做服务拆分的时候,很难划清业务边界,导致服务化进程陷入泥潭。

对应上面的问题,我们可以在Account这个实体中加入本应该就属于这个实体的行为,比如借记、贷记、转账等。每一笔转账都对应着一笔交易明细,我们根据交易明细可以计算出账户的余额,这个是一个潜在的业务规则,这种业务规则都需要交由实体本身来维护。
另外新增账户信用实体,提供账户单笔转账的最大金额计算逻辑。这样我们就把原本全部在service里面的逻辑划入到不同的负责相关职责的“领域对象”当中了,service的逻辑变得非常清楚明了,想实现A给B转账,直接获取A实体,然后调用A实体中的转账方法即可。service将不再关注转账的细节,只负责将相关的实体组织起来,完成复杂的业务逻辑处理。

规则引擎

groovy脚本

使用插件的方式加载各种组件到上下文中,极大的方便了功能开发的灵活性。

使用预加载的方式加载已有的规则,并将加载后的对象缓存起来,每次规则变更时重新load整条规则,极大的提升了引擎的执行效率

计数器引入AtomicLongFieldUpdater工具类,来减少计数器的内存消耗

灵活的上下文使用方式,方便定制规则执行的流程(规则执行顺序、同步异步执行、跳过某些规则、规则集短路等),灵活定义返回结果(可以返回整个上下文,可以返回每条规则的结果,也可以返回最后一条规则的结果),这些都可以通过设置上下文来实现。

指标存储:redis/hbase
使用hbase的列族来实现滑动窗口的计算。

dubbo这块可以采用泛化调用

Reference

网易考拉规则引擎平台架构设计与实践
为什么要用规则引擎?

相关文章

  • 谈一谈规则引擎在活动系统中的落地

    本文从 “为什么需要规则引擎” “规则引擎的定义” “规则引擎在营销活动系统中的落地” “规则引擎平台内部架构” ...

  • php写个简单的规则引擎demo

    1、规则引擎简介 规则引擎是一种推理引擎,它是根据已有的事实,从规则知识库中匹配规则,并处理存在冲突的规则,执行最...

  • Java常用的规则引擎

    概述 在本文中,我们将介绍Java中一些最受欢迎的规则引擎。 规则引擎简介 规则引擎由推理引擎发展而来,是一种嵌入...

  • 规则引擎的优缺点

    为何要使用规则引擎? 讨论规则引擎时,下边这些问题经常被提及: 什么时候应当使用规则引擎? 相较与使用使用“if....

  • 自学Java项目之规则引擎

    项目:规则引擎专题 规则引擎,全称为业务规则管理系统,英文名BRMS(Business Rule Manageme...

  • 规则引擎

    场景 业务风控,主要是下单、支付、优惠券、红包、签到等行为的风险控制,对抗的风险行为包括黄牛刷单、恶意占用库存、机...

  • 规则引擎

    1.正向链、反向链 2.误差的分类 4.复合概率

  • 规则引擎

    什么是规则引擎? 所谓的规则引擎就是一组规则加上一组动作, 当某种规则被满足后触发某个动作 业务痛点 多变的需求 ...

  • 规则引擎

    规则引擎https://www.yuque.com/yangdakang/kb/bstdgr[https://ww...

  • 规则引擎

    什么是规则引擎 业务场景一般都是杂糅繁复的,于是代码很容易就互相嵌套、错综复杂、结构不清晰,同时维护成本高,可读性...

网友评论

    本文标题:规则引擎

    本文链接:https://www.haomeiwen.com/subject/txydcctx.html