风控系统之CEP - Esper还是Flink?
Posted Fintech技术圈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了风控系统之CEP - Esper还是Flink?相关的知识,希望对你有一定的参考价值。
CEP的概念的核心是沿着时间轴维度的数据分析,把数据流作为输入,根据一系列预定义的规则,把数据(或部分数据)重定向给监听者;当发现数据流中的隐含的模式(Pattern)时触发事件。在大量数据被产生出来并需要进行实时地分析的场景下,CEP特别有用。
Flink官网的一个简单案例:数据中心机架的温度被实时监控,每隔一小段时间,监控系统收到一个当前温度报告,当温度超过阈值时会产生Warning事件,连续两个Warning事件会产生Alert事件,Alert事件则会触发降温的动作。
以下图片非常形象地说明了数据处理与事件处理的区别,摘自商业产品Sybase CEP的相关资料:
在线上金融服务中,用户的所有操作都可以视为一连串的事件,基于时间窗口分析可以发现一些规律。例如,在我们农村电动车摩托车消费分期的场景中,通常办单频度很低,如果过去一小时内在同一个网点出现超过3起贷款申请,可以视为经销商套现风险,需要加强审核;如果过去一小时内,同一个县的订单,出现多个工作单位信息一样的用户,也有可能是团伙欺诈。类似的风险提示规则会有非常多,而且随着业务的发展,风控团队的经验累积,会形成非常庞大的规则库,不同于通常规则引擎所处理的基于数据的规则,这些都是基于事件的规则。
风控团队需要强有力的工具,来快速创建和管理这样的CEP规则,并且实时监控系统中的事件流。CEP系统可以显著提高系统的监控和分析能力。
前述Flink网站上那个温度监控器的例子,如果用普通手段,比如Java代码实现,非常复杂,业务团队无法直接操作,开发上线周期漫长,无法跟上市场变化,而在Flink平台上用短短几行代码就可以实现这种业务事件Pattern:
Pattern<MonitoringEvent, ?> warningPattern = Pattern.<MonitoringEvent>begin("First Event")
.subtype(TemperatureEvent.class)
.where(evt -> evt.getTemperature() >= TEMPERATURE_THRESHOLD)
.next("Second Event")
.subtype(TemperatureEvent.class)
.where(evt -> evt.getTemperature() >= TEMPERATURE_THRESHOLD)
.within(Time.seconds(10));
如果是程序员,哪怕从来没有接触过Flink,应该也能看懂大概的意思,明白它比从头开始从Java代码来实现要简单很多。利用Flink CEP,即Flink 的复杂事件处理库,用户可以快速检测无尽数据流中的复杂模式。
Esper是一个历史悠久的纯Java开源复杂事件和事件流引擎,可以监测事件流,并在特定事件发生时触发某些动作。Esper性能良好,能够实时或者接近实时处理事件(或消息),具有高吞吐量、低响应时间和支持复杂计算等特点。并且Esper的EPL是对业务人员非常友好的类SQL工具,例如,计算最近两次温度监控器数据的平均温度:
select avg(temperature) from SensorEvent.win.length(2)
通过引入时间窗口的概念,用户可以用类似SQL的语法分析一个时间窗口内的所有事件。
Flink和Esper之间还存在一些显著的区别如下:
- Esper内置存储数据库,Flink只是一个处理框架,依赖外部数据存储;
- Esper提供了类SQL的复杂事件处理语言,非常简单易用,而Flink目前通过API提供类似功能;
- Esper的集成性对于传统的企业软件比较友好,而Flink诞生于开源社区,更容易与各种流行的开源工具集成(例如Kafka);
- Esper相对比较稳定,从2008年发布第一个版本到现在,使用的用户众多,而Flink大概在2015年才有第一个稳定版本;
- Esper也有商业产品,Flink是Apache旗下完全开源的项目
相对而言,如果不购买大厂的商业产品,当下,Esper是更靠谱的选择,不过Flink也前途光明。
推荐阅读往期早餐会热门文章:
原创Fintech领域技术、产品和商业模式全球观察
每日7:00AM准时推送
参与早餐会,加入Fintech从业者微信群
以上是关于风控系统之CEP - Esper还是Flink?的主要内容,如果未能解决你的问题,请参考以下文章