风控规则引擎构建及挑战

咕咕鸡
• 阅读 296

引言

如果决策引擎是风控的大脑,那么规则引擎则是大脑内的重要构成,其编排了各种对抗黑产的规则,是多年对抗黑产的专家经验的累计,本文将向你介绍规则引擎的构成及实现。

背景

什么是规则引擎?

规则引擎可以帮助企业将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务规则。这使得企业可以更灵活地管理和修改业务规则,而无需修改应用程序代码。

规则引擎可以接受数据输入,并根据业务规则解释数据,做出业务决策。这些业务决策可以是自动的,也可以是人工干预的。

规则引擎通常包含如下几个部分:

  • 规则库:规则库包含了所有可用的规则。这些规则可以是预先定义好的,也可以是动态生成的。
  • 策略:用于管理规则,是对规则的条件组装,如评分卡策略、最坏匹配策略等。
  • 规则执行引擎:负责规则的执行。读取规则库中所有可用规则,根据规则的条件执行规则。

为什么需要规则引擎?

规则引擎可以帮助企业更有效的管理和执行业务规则,提高决策的质量、效率和可靠性。

特点如下:

  • 将业务决策从代码中剥离出来:运营人员可以更灵活有效的管理和修改业务规则,而无需修改业务代码,节省对抗时间
  • 提高决策质量:规则引擎按照业务规则自动做出决策,无需依赖人为干预
  • 提效:规则配置好后,可永久自动执行,减少人力消耗
  • 稳定性:减少发版,减少测试,减少人为错误

设计实现

技术选型

在选择规则引擎时,需要考虑如下几点:

  • 业务需求:应该根据企业的业务需求来选择规则引擎。如果企业需要快速执行大量规则,则应选择性能较高的规则引擎。
  • 技术平台:选择与企业现有技术平台相兼容的规则引擎。如果企业使用的是 Java 技术平台,则应选择支持 Java 的规则引擎。
  • 成本:考虑规则引擎的购买成本、实施成本和运行成本。是否开源也是很多技术团队的选择因素。
  • 可维护性:选择易于维护的规则引擎,在需要时能够快速修改和更新规则。
  • 市场占有率:选择市场占有率较高的规则引擎,在需要时能够获得较好的技术支持和培训。
  • 技术支持:选择提供较好技术支持的规则引擎,以便在使用过程中能够得到及时的帮助。

当然,如果人力足够,可以考虑自己实现规则引擎亦可,自实现版本的规则引擎肯定灵活性更高,但是在性能和稳定性上需要较长时间的验证和考验。

如下是市场上热门的开源规则引擎:

规则引擎 简介
JBoss Drools JBoss Drools 是一款开源的规则引擎,支持 Java 和其他语言。
OpenRules OpenRules 是一款开源的规则引擎,支持 Java 和其他语言。
Hippo Rules Engine Hippo Rules Engine 是一款开源的规则引擎,支持 Java 和其他语言
Apache Flink Apache Flink 是一款开源的流处理框架,也可以用作规则引擎
Easy Rules Easy Rules 是一个基于 Java 的开源规则引擎框架,它提供了简单易用的 API,使得开发人员可以轻松地使用规则引擎。
基于 Groovy 实现规则引擎 Groovy 是一种动态语言,可以运行在 Java 平台上。由于 Groovy 的语法简单,因此可以通过使用 Groovy 来实现规则引擎。

规则引擎术语

  • 规则(Rule):规则是描述业务决策的规则或条件的语句。规则通常由两部分组成:条件和动作。条件是描述规则被触发的判断,动作是描述规则执行的操作。
  • 事实(Fact):事实是描述业务场景的数据。事实可以是一个单独的数据项,也可以是一组数据。规则引擎会根据事实来触发规则。
  • 决策表:决策表是一种以表格形式表示规则的数据结构。决策表通常由多个条件列和一个结果列组成。当条件列的值都满足时,决策表就会触发结果列的规则。
  • 规则集合:规则集合是一种由规则组成的数据结构。规则集合通常以树形结构存储,每个规则都有一个条件和一个动作。当条件满足时,规则集合就会执行规则的动作。

规则配置解析

规则引擎最终是需要交付给运营人员去配置使用的,所以必须能满足灵活的配置编排,且易懂,才能最大发挥它的威力。

规则配置

风控规则引擎构建及挑战 说明:

  • 触发条件:任意一个、满足所有、自定义。其中自定义最灵活,用户可以使用条件表达式配置任意想要的触发与或条件
  • 变量(指标):左值,指标是输入数据衍生、或查询、或计算所得的值
  • 比较符:等于、不等于、包含、属于、大于、小于、空 等等
  • 阈值:右值,与指标计算所得值相比较,如果比较符关系成立,则认为命中当前规则
  • 默认值:当指标执行出错或者超时,默认返回的值

策略配置

风控规则引擎构建及挑战 说明:

  • 评分卡模式:依据每条规则命中所得分数之和,判定是否命中相应分数段的决策
  • 最坏匹配:只要有一条规则命中,则立即拒绝
  • 阈值:如果是评分卡模式,需要设置三个段位并且指定阈值

性能调优

决策引擎每天承载企业业务全部的风险决策,峰值 QPS 基本过万,但是风控的决策耗时需要足够的短,在不影响业务的情况下,尽可能快的返回决策结果,这是一大挑战。

从以往的调优经验来看,可以从以下几点来优化规则引擎:

  • 并行执行规则:一次决策流中可能包含 N 个规则节点,每个规则节点包含 M 个规则,充分利用多核 CPU 优势,发挥最大威力,但同时需要考虑多线程数据安全问题
  • 预加载指标:规则执行都是在内存中的,但是所需要的指标值往往都是需要调用外部系统得到的,一是网络开销,二是指标计算开销。可以在执行规则集之前,全部预加载一次指标再缓存,这样执行时直接从内存取值就会快很多。但是需要注意成本问题(如付费指标,存储成本,架构复杂度等),废调用问题(前置规则已拒绝)等等
  • 规则加载预编译:规则首次加载往往比较耗时,此时最好能 warm up 一下,这样在流量进来后,即可立即执行,但是使用预编译可能会增加系统的启动开销时间,需要做好相应的平衡工作
  • 规则执行优化:运营配置规则时可能不会考虑规则执行顺序问题,但是程序在执行的时候可以智能编排一下,通过加入 与或顺序 关系,尽可能的把大耗时大成本的指标放在最后面执行,优先执行内存指标,万一命中则直接断言,后续指标则不会再执行,节省了时间。要做到这一点,需要对指标进行较为详细的归类及元数据管理,需要全域的数据配合,对风控这种需要大数据的接口来说是一大挑战。

总结

规则引擎在风控整体架构内的重要性毋庸置疑,它的稳定性直接关系到风控决策的性能、数据质量。同时,对运营来说,好的决策引擎是足够灵活,足够智能,满足规则数据编排需求,且能立即生效上线,这是保障他们对抗黑产的前提,希望本文对构建高效的规则引擎又较好的启发。

往期精彩

欢迎关注公众号:咕咕鸡技术专栏 个人技术博客:https://jifuwei.github.io/

风控规则引擎构建及挑战

点赞
收藏
评论区
推荐文章
Easter79 Easter79
2年前
spring和Drools规则引擎的使用
Drools5.2.0.Final与Spring3集成测试在drools5.2,有一个jar包:droolsspring5.2.0.Final.jar,其中定义了在spring中应用的drools的扩展。通过这些扩展,可以直接在spring的配置文件中,配置knowledgebase、session等bean,从而在spring配置的程序中直
咕咕鸡 咕咕鸡
1年前
风控决策引擎——决策流路径规划
引言决策引擎服务是风控系统的大脑,承载着风控策略编排和计算的任务,对决策的时耗和精度有着严格的要求,本文以决策流执行路径实现方案为切入点,一窥风控决策引擎高效的原理。<!more背景在上文
咕咕鸡 咕咕鸡
1年前
风控核心子域——名单服务构建及挑战
名单服务是风控架构中重要子域,对风险决策的性能、用户体验、成本管控、风险治理沉淀都有重要影响,本文将详细介绍名单服务设计思路和实现。
咕咕鸡 咕咕鸡
1年前
减少80%存储-风控名单服务重构剖析
小小的Redis大大的不简单,本文将结合风控名单服务在使用Redis存储数据时的数据结构设计及优化,并详细分析redis底层实现对数据结构选型的重要性。
Stella981 Stella981
2年前
Drools规则引擎技术在天梯项目中的应用
Drools规则引擎技术在天梯项目中的应用今天主要来给大家分享一下Drools规则引擎的原理与规则配置。在介绍之前,首先给大家介绍一下我行研发的SQL评测优化项目——天梯系统,大数据天梯系统是一款智能分析SQL评测工具,不仅可以提高脚本上线效率,降低人员工作量,而且可以针对各种查询的算力消耗、数据安全及代码
Stella981 Stella981
2年前
EdgeX 规则引擎教程
!(https://oscimg.oschina.net/oscnet/ad37eb350a234fe4b54dc4f995a9726d.png)在EdgeXGeneva版本中,EMQXKuiper基于SQL的轻量级流式数据处理软件与EdgeX进行了集成。在进入这篇教程之前,让我们先花一些时间来了解一些Ku
Wesley13 Wesley13
2年前
MySQL数据库InnoDB存储引擎Log漫游(1)
作者:宋利兵来源:MySQL代码研究(mysqlcode)0、导读本文介绍了InnoDB引擎如何利用UndoLog和RedoLog来保证事务的原子性、持久性原理,以及InnoDB引擎实现UndoLog和RedoLog的基本思路。00–UndoLogUndoLog是为了实现事务的原子性,
Stella981 Stella981
2年前
RuleEngine
规则引擎是嵌入在应用程序中的组件,实现了决策逻辑和业务系统的分离功能。在现实业务场景中,决策逻辑的复杂性和可变性,使得决策引擎的应用越来越多,把决策逻辑单独分离出来也显得越来越重要了。目前市场上常用的规则引擎有IlogJRules,Drools,Jess,VisualRules等。IlogJRules是最有名的商用BRMS;Drools是最活跃
专注IP定位 专注IP定位
1年前
搜狐员工遭遇工资补助诈骗 黑产与灰产有何区别 又要如何溯源?
“网络黑灰产”大家对这个词并不陌生,但是其实黑产并不等于灰产,两者还是有区别的。网络黑灰产涉及黑产和灰产两个方面,黑产中的“黑”主要是指法律明确将此类行为规定为违法犯罪行为。而灰产则与黑产有所不同,是指行为在立法上尚未有明确的规定,游离于违法犯罪的边缘,未构成犯罪的行为,如恶意注册、买卖账号等。而网络黑灰产业指的是借助于网络平台与技术实施的网络违法犯罪,该类
「风控算法服务平台」高性能在线推理服务设计与实现
本文作者:郁昌存来自京东科技风险管理中心一、背景/目标1)风控智能化体系建设依赖大量深度学习/机器学习模型进行实时在线的风险识别、智能决策。要求可以将算法模型快速部署为在线服务,供决策引擎调用。2)风控决策引擎涵盖交易、支付、营