伴随着互联网的发展,游戏、商贸、慈善、博彩、餐饮等各行各业都开始触网。“天下熙熙,皆为利来;天下攘攘,皆为利往”,种类繁多的网络活动直接或间接的都与钱相关,传统的支付不能满足人们快节奏的互联网生活,电子支付应运而生,但电子支付给人们带来方便快捷的同时也给参与支付的各方带来了风险,账号盗用、虚假交易、金融欺诈等事件层出不穷。支付风险自古就存在,在互联网繁荣的今天只是多了些新花样,风控系统就是通过监控交易、渠道、产品、用户,对相关数据进行实时、准实时、定时的分析、挖掘,从而识别交易风险,尽早发现欺诈,采取各种措施降低交易损失。
风控系统的目的是在不影响正常业务的同时把交易风险降低到合理的水平,风控系统并不能消灭风险,所以在建设风控系统时不可盲目追求数据的准确性以及一致性。
风控系统主要由以下几个部分构成:风控实时引擎、风控准实时引擎、风控定时引擎、惩罚中心、规则中心等,下面分别进行介绍。
支付系统会把当前交易部分信息同步传递给风控实时引擎以获取当前交易的风险评分和处理建议。风险评分总分为100,分数越高风险越大,-1代表风控系统不能对当前交易进行评估风险,一般是指风控系统没能获取到当前交易正面或负面的信息。风控实时引擎最大的挑战是性能,实时引擎对支付交易进行风险评估必须在100ms内完成,否则会影响用户体验。
风控实时引擎依据公司积累的风控数据以及第三方风控数据对进行风险评估。公司风控数据主要来自风控准实时引擎和风控定时引擎。
风控实时引擎建立在规则引擎Drools基础上,目的是为了提高系统的灵活性和可配置性。
下图是风控报告的域模型:
风控系统中风控规则变动比较频繁,其它部分相对稳定,通过引入规则引擎可以解耦系统与规则、提高复杂逻辑的可维护性、提高规则的可读性以及可理解性。
交易欺诈行为具备一定的隐蔽性,不是所有风险都能实时的作出正确的评估,某些情况下需要通过对最近一段时间的数据进行分析才能确定欺诈行为,例如:对最近一个月的用户行为进行分析。风控准实时引擎从消息服务器获取交易数据,对交易数据流作异步分析,分析的结果通过风控服务存入风控数据库,供实时风控引擎评估交易风险。风控准实时引擎从发现异常到风控数据生效的时间在100ms以内,可以有效防止交易风险扩大。
风控系统初始建设时中风控准实时引擎往往是通过消息监听器消费交易消息,把中间数据存储在Redis缓存上,对数据进行多维度分析。由于需要针对每项指标开发相应程序,风控规则开发成本较高、上线周期长,为了解决这个问题以及提高系统的灵活性、可配置性,在风控系统2.0版本引入了CEP引擎Esper以及规则引擎Drools。
风控准实时引擎需要使用到Drools、Esper、Esper IO AMQP、Esper Extension、Spring等组件,其中Esper Extension是我们对Esper的扩展,主要用来提高Esper可配置性以及丰富Esper IO功能以及弥补Esper缺陷。
下图是风控准实时引擎架构:
事件驱动是一种监测、分析信息流从中得出推论的方法。CEP(Complex Event Processing)也就是复杂事件驱动,是结合多种数据源的数据对信息流进行监测、分析从推理出一些复杂的事件或模式,CEP的目的是识别出一些有意义的事件,例如:机遇、威胁,并且尽可能快的作出反应。
CEP引擎已经被一些公司开发出来,用来满足那些需要分析事件并对其作出反应的的需求,下面是一些典型的应用示例:
下面列出一些CEP产品,大家可以根据自己的情况选用。开源 CEP产品:
商业CEP产品:
Esper目前支持大约30种数据窗口,深入理解窗口是应用Esper的关键,下面表格列出常用的几种:
Time Window:
Length Window:
Time Batch Window:
事件处理语言(EPL)是SQL标准语言并做了扩展,提供了SELECT、 FROM、 WHERE、 GROUP BY、HAVING和 ORDER BY等子句。
Esper提供了丰富的API,可以独立部署也可以集成进任何应用。
Esper统计分析的中间数据全部是存储在内存中,不能跨服务器,只能单机部署,内存有限,存在单点故障,由于全内存操作,系统重启后中间数据就会丢失无法恢复。Esper的这些缺点风控系统都可以接受,对风控系统没有实质的影响。
某些非常隐蔽的交易欺诈通过实时或准实时风控引擎很难发现,这些风险需要通过分析用户跨月或跨年的数据才能识别。定时风控引擎主要用来定时对支付相关等数据进行深度挖掘,建立对应的风控模型,典型应用场景是用户的信用等级模型以及用户行为分析。
定时风控引擎构建在Hadoop集群上。
惩罚中心负责积累风控数据并提供奖励和惩罚的相关服务,风控实时引擎、风控准实时引擎、风控定时引擎会调用惩罚中心的服务查询或保存风控数据。惩罚中心针对不同维度提供多种惩罚策略以及多种奖励策略。风控实时引擎在识别交易风险时根据规则综合考虑奖励以及惩罚相关数据以提高风险识别准确率。
下图是处罚中心域模型:
风控系统的建设往往是分阶段实施的,一般分为以下三个阶段:
团队技能是逐步积累的,对风控系统以及风控模型的理解也需要时日,如果初始建设阶段求大求全会使建设工作增加不确定性,一旦出现技术或业务方向上的偏差会给公司带来巨大的损失。循序渐进逐步建设,在前一阶段的工作产生效益时再去进行下一阶段的工作阻力会小很多,任何时候保持团队对项目的控制力都是相当重要的,这是我们在建设风控系统的过程中的一点感悟。
康大强 ,拥有14年企业与互联网开发、设计、架构经验;历任金蝶软件、芒果网、华为、OPPO架构师;目前专注于文法分析、工作流、高并发系统、大数据以及复杂业务分析处理。